下面的代碼適用于 PHP 7.4,但在 PHP 8 中會出錯。
// Add a Header
function filter_manage_edit_shop_order_columns( $columns ) {
// Add new column
$columns['pickup_date'] = 'Afhaaldatum';
return $columns;
}
add_filter( 'manage_edit-shop_order_columns', 'filter_manage_edit_shop_order_columns', 10, 1 );
// Populate the Column
function action_manage_shop_order_posts_custom_column( $column, $post_id ) {
// Compare
if ( $column == 'pickup_date' ) {
// Get order
$order = wc_get_order( $post_id );
// Loop though order shipping methods
foreach( $order->get_items('shipping') as $shipping_item ) {
// Get appoitment start
$pickup_appointment_start = $shipping_item->get_meta( '_pickup_appointment_start' );
date_default_timezone_set('Europe/Amsterdam');
/* Set locale to Dutch */
setlocale(LC_ALL, 'nl_NL');
$startdate = strftime('%e %B %Y om %H:%M uur', $pickup_appointment_start );
if(!empty($startdate))
// echo '<p>' .$startdate. ' <br> om ' . $endtime . ' uur</p>';
echo '<p>' .$startdate. '</p>';
// Testing (to be removed) - Empty value case
else
echo '<small>-</small>';
break;
}
}
}
add_action( 'manage_shop_order_posts_custom_column' , 'action_manage_shop_order_posts_custom_column', 10, 2 );
這是錯誤:
Fatal error: Uncaught TypeError: strftime(): Argument #2 ($timestamp) must be of type ?int, string given in /home/website/domains/WEBSITEX/public_html/debug/wp-content/plugins/insert-php/includes/class.execute.snippet.php(635) : eval()'d code:29
Stack trace:
#0 /home/website/domains/WEBSITEX/public_html/debug/wp-content/plugins/insert-php/includes/class.execute.snippet.php(635) : eval()'d code(29): strftime('%e %B %Y om %H:...', '')
#1 /home/website/domains/WEBSITEX/public_html/debug/wp-includes/class-wp-hook.php(308): action_manage_shop_order_posts_custom_column('pickup_date', 49721)
#2 /home/website/domains/WEBSITEX/public_html/debug/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array)
#3 /home/website/domains/WEBSITEX/public_html/debug/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#4 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-posts-list-table.php(1363): do_action('manage_shop_ord...', 'pickup_date', 49721)
#5 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-list-table.php(1532): WP_Posts_List_Table->column_default(Object(WP_Post), 'pickup_date')
#6 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-posts-list-table.php(1397): WP_List_Table->single_row_columns(Object(WP_Post))
#7 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-posts-list-table.php(807): WP_Posts_List_Table->single_row(Object(WP_Post), 0)
#8 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-posts-list-table.php(783): WP_Posts_List_Table->_display_rows(Array, 0)
#9 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-list-table.php(1444): WP_Posts_List_Table->display_rows()
#10 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/includes/class-wp-list-table.php(1371): WP_List_Table->display_rows_or_placeholder()
#11 /home/website/domains/WEBSITEX/public_html/debug/wp-admin/edit.php(487): WP_List_Table->display()
#12 {main} thrown in /home/website/domains/WEBSITEX/public_html/debug/wp-content/plugins/insert-php/includes/class.execute.snippet.php(635) : eval()'d code on line 29
i changed the format from datetime but that is also not working
uj5u.com熱心網友回復:
仔細閱讀錯誤訊息的第一行會發現問題所在。
致命錯誤:未捕獲的型別錯誤:strftime():引數 #2 ($timestamp) 必須是 ?int 型別,給定字串
您的代碼段中使用該函式的唯一行是
$startdate = strftime('%e %B %Y om %H:%M uur', $pickup_appointment_start );
你可以$pickup_appointment_start從 WooCommerce 的->get_meta()功能中獲得,這里。
$pickup_appointment_start = $shipping_item->get_meta( '_pickup_appointment_start' );
正如您的錯誤訊息所表明的那樣,您獲得了元資料的文本字串。時間戳是一個整數,如1667571169. 您的該特定專案的元資料是否可能是垃圾?無論它是什么,您都可以使用intval()將其強制為整數。但它可能會為零。
strftime()的 php手冊頁清楚地表明該函式已被棄用。
您應該將其替換為對wp_date()的呼叫。false如果時間戳是垃圾,則該函式回傳。將它與您的站點設定一起使用以查找您的本地化格式。
$startdate = wp_date(
get_option( 'date_format' ) . ' ' . get_option( 'time_format' ),
$pickup_appointment_start,
get_option( 'timezone_string' );
if ( ! $startdate ) ... echo etc.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/527439.html
