返回

WooCommerce 订单列表 Order Payment 自定义列为何为空?【原因及解决步骤】

php

WooCommerce 订单列表中 Order Payment 自定义列为空的问题

在 WooCommerce 订单列表中添加 Order Payment 自定义列时,有时会出现列为空的情况。本文将深入探究导致该问题的常见原因并提供解决步骤。

原因

1. 语言设置问题:

  • WooCommerce 多语言功能可能导致支付网关标题未翻译,从而导致列为空。

2. 支付网关支持问题:

  • 并非所有支付网关都支持在订单列表中显示支付方式。

3. 代码问题:

  • 代码错误(例如使用错误的函数或全局变量)会导致列为空。

4. WooCommerce 版本问题:

  • 使用过时的 WooCommerce 版本可能存在此问题。

解决步骤

1. 检查语言设置:

  • 确保 WooCommerce 未启用多语言功能,或已针对每种语言翻译支付网关标题。

2. 验证支付网关支持:

  • 查看支付网关文档或联系支持团队,确认其支持在订单列表中显示支付方式。

3. 修复代码问题:

  • 仔细检查添加的代码,特别是函数 get_payment_method_title()、全局变量 $post 和条件语句。

4. 更新 WooCommerce:

  • 将 WooCommerce 更新到最新版本以解决可能存在的错误。

代码示例

使用以下经过更新的代码片段添加 Order Payment 自定义列:

add_filter( 'manage_edit-shop_order_columns', 'add_order_new_column_header', 20);
add_action( 'manage_shop_order_posts_custom_column', 'add_wc_order_admin_list_column_content' );

function add_order_new_column_header( $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;
}

function add_wc_order_admin_list_column_content( $column ) {
   
    global $post;
 
    if ( 'order_shipping' === $column ) {
 
        $order = wc_get_order( $post->ID );
        echo $order->get_shipping_method();
        
    } elseif ( 'order_payment' === $column ) {
        
        $order = wc_get_order( $post->ID );
        $payment_method_title = $order->get_payment_method_title();
        echo $payment_method_title ? $payment_method_title : '—';
    }
}

其他提示

  • 清除 WooCommerce 和浏览器缓存。
  • 启用 WooCommerce 的调试模式。
  • 联系 WooCommerce 支持团队寻求帮助。

常见问题解答

1. 为什么 Order Payment 列有时会消失?

  • 代码错误、语言设置问题、支付网关不支持或 WooCommerce 版本过时都可能导致列消失。

2. 如何解决 Order Payment 列为空的问题?

  • 检查代码、语言设置、支付网关支持和 WooCommerce 版本,并采取相应的解决措施。

3. Order Payment 列是否适用于所有支付网关?

  • 否,只有支持在订单列表中显示支付方式的支付网关才适用。

4. Order Payment 列可以包含哪些信息?

  • 列包含支付方式的标题,例如信用卡、PayPal 或货到付款。

5. Order Payment 列可以用来做什么?

  • 列提供有关订单支付方式的快速概览,有助于查找特定支付方式的订单。