管理订单列表中的自定义列在 WooCommerce 8.6.1 中消失了

问题描述 投票:0回答:1

直到 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;
}
php wordpress woocommerce hook-woocommerce orders
1个回答
0
投票

我已经在经典订单(不是 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 之外的所有插件。然后检查列是否显示。

  • 如果是这种情况,则说明插件出了问题:逐一启用插件,每次都进行检查。
  • 如果不是这种情况,请重新启用您的插件,并尝试暂时删除其他自定义代码(保持此自定义代码在管理订单列表中显示 2 列... 等等……
© www.soinside.com 2019 - 2024. All rights reserved.