直到 WooCommerce 8.4,以下代码都可以很好地向订单视图添加“送货方式”和“付款方式”列,并且它完全根据需要显示详细信息。默认的运输和付款栏没有显示我们需要的所有详细信息。
现在,在 WooCommerce 8.6.1 更新后,无论启用或未启用高性能订单存储 (HPOS),这两列都不会出现。 代码位于functions.php文件中,这两个附加列也出现在显示设置中:
我知道由于 WooCommerce 版本的变化,我应该相应地调整代码,但我不确定具体如何调整。我最初认为 HPOS 是差异所在,但即使当我在 8.6.1 上切换回旧模式时,这两列也没有再次出现。
// Add shipping method and payment method columns to order page
add_filter( 'manage_edit-shop_order_columns', 'add_custom_columns_to_admin_orders', 20);
function add_custom_columns_to_admin_orders( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;
if ( 'order_total' === $column_name ) {
$new_columns['order_shipping'] = __( 'Tarnemeetod', 'my-textdomain' );
$new_columns['order_payment'] = __( 'Maksemeetod', 'my-textdomain' );
}
}
return $new_columns;
}
add_action( 'manage_shop_order_posts_custom_column', 'custom_columns_content_in_admin_orders' );
function custom_columns_content_in_admin_orders( $column ) {
global $post, $the_order;
if ( 'order_shipping' === $column )
{
echo $the_order->get_shipping_method();
}
if ( 'order_payment' === $column ) {
echo $the_order->get_payment_method_title();
}
}
// Make payment methods searchable
add_filter( 'woocommerce_shop_order_search_fields', 'makse_otsing' );
function makse_otsing( $meta_keys ){
$meta_keys[] = '_payment_method_title';
return $meta_keys;
}
// Make shipping methods searchable
add_filter( 'woocommerce_shop_order_search_fields', 'tarne_otsing' );
function tarne_otsing( $meta_keys ){
$meta_keys[] = '_shipping_method';
return $meta_keys;
}
我已经在经典订单(不是 HPOS)上的最新 WooCommerce 版本上测试了您的代码,并且您的代码在最新的 WooCommerce 版本中工作,因此还有其他问题造成了麻烦。
如果您的自定义列仍然启用,也许您可以检查“屏幕选项”选项卡(位于右上角)。
基于 使用 HPOS 过滤 WooCommerce 中的订单列表 答案线程,以下是使您的代码与 高性能订单存储 (HPOS) 兼容的方法:
// Add shipping method and payment method columns to order page
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'add_custom_columns_to_admin_orders', 20); // HPOS
add_filter( 'manage_edit-shop_order_columns', 'add_custom_columns_to_admin_orders', 20);
function add_custom_columns_to_admin_orders( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;
if ( 'order_total' === $column_name ) {
$new_columns['order_shipping'] = __( 'Tarnemeetod', 'my-textdomain' );
$new_columns['order_payment'] = __( 'Maksemeetod', 'my-textdomain' );
}
}
return $new_columns;
}
add_action('manage_woocommerce_page_wc-orders_custom_column', 'custom_columns_content_in_admin_orders', 10, 2); // HPOS
add_action( 'manage_shop_order_posts_custom_column', 'custom_columns_content_in_admin_orders', 10, 2);
function custom_columns_content_in_admin_orders( $column, $order ) {
if( ! is_a($order, 'WC_order') && $order > 0 ) {
$order = wc_get_order( $order );
}
if ( 'order_shipping' === $column ) {
echo $order->get_shipping_method();
}
elseif ( 'order_payment' === $column ) {
echo $order->get_payment_method_title();
}
}
// Make payment methods searchable
add_filter( 'woocommerce_order_table_search_query_meta_keys', 'makse_ja_tarne_otsing' ); // HPOS
add_filter( 'woocommerce_shop_order_search_fields', 'makse_ja_tarne_otsing' );
function makse_ja_tarne_otsing( $meta_keys ){
$meta_keys[] = '_payment_method_title';
$meta_keys[] = '_shipping_method';
return $meta_keys;
}
代码位于子主题的functions.php文件中(或插件中)。
在启用或不启用高性能订单存储 (HPOS) 的情况下,在 WooCommerce 最新版本 (8.6.1) 上进行测试和工作。
如果您的自定义列仍未显示,请先进行数据库备份。然后尝试禁用除 WooCommerce 之外的所有插件。然后检查列是否显示。