在 Woocommerce 订单管理列表中显示用户失败并取消订单计数

Posted

技术标签:

【中文标题】在 Woocommerce 订单管理列表中显示用户失败并取消订单计数【英文标题】:Display in Woocommerce Orders Admin list users failed and cancelled orders count 【发布时间】:2018-09-06 15:38:32 【问题描述】:

我已将该列添加到订单表中(是否称为该列),我现在尝试首先计算用户拥有的失败和取消订单的数量(如果有),然后使用 echo 显示该数量。这是我的代码,它显示了列但显示了一个空白列。

非常感谢任何帮助。

代码:

function add_failed_orders_column_to_order_page( $columns ) 

$new_columns = array();
foreach ( $columns as $column_name => $column_info ) 
$new_columns[ $column_name ] = $column_info;

if ( 'order_total' === $column_name ) 
$new_columns['previous_failed_customer_orders'] = __( 'Failed Orders', 'ocean-child' );
 
return $new_columns;

add_filter( 'manage_edit-shop_order_columns', 'add_failed_orders_column_to_order_page', 20 );



add_action( 'manage_shop_order_posts_custom_column' , 'display_previous_failed_orders', 10, 2 );
function display_previous_failed_orders( $order, $column )

    global $order;
    switch ( $column )
    
        case 'previous_failed_customer_orders' :
         $failed_customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => $order->get_customer_id(),
        'post_type'   => 'shop_order',
        'post_status' => array('wc-cancelled', 'wc-failed'),
    ) );
$failed_orders_count = '<strong style="color:red !important; font-size:15px !important;">' . count($failed_customer_orders) . '</strong>'; 
                echo $failed_orders_count;
            
            break;
    

【问题讨论】:

【参考方案1】:

下面的代码使用一个非常简单且轻量级的 SQL 查询来获取具有取消和失败状态的用户订单的计数。您的代码中也存在一些错误。

您重新访问的代码:

add_filter( 'manage_edit-shop_order_columns', 'add_column_user_failled_cancelled', 20, 1 );
function add_column_user_failled_cancelled( $columns ) 
    $new_columns = array();

    foreach ( $columns as $column_key => $column_label ) 

        $new_columns[$column_key] = $column_label;

        if ( 'order_total' === $column_key ) 
            $new_columns['cancelled_failled'] = __( 'Failed Orders', 'ocean-child' );
        
    
    return $new_columns;


add_action( 'manage_shop_order_posts_custom_column' , 'column_content_user_failled_cancelled', 10, 1 );
function column_content_user_failled_cancelled( $column ) 
    global $post, $the_order, $wpdb;

    if ( $column =='cancelled_failled' ) 

        // Get the count of the user failled and cancelled orders
        $count = $wpdb->get_var( "
            SELECT COUNT(p.ID) FROM $wpdb->prefixposts AS p
            JOIN $wpdb->prefixpostmeta AS pm ON p.ID = pm.post_id
            WHERE p.post_type = 'shop_order' AND p.post_status IN ('wc-cancelled','wc-failed')
            AND pm.meta_key = '_customer_user' AND pm.meta_value = '$the_order->get_customer_id()'
        ");

        echo '<strong style="color:red !important; font-size:15px !important;">' . $count . '</strong>';
    

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

非常感谢 LoicTheAztec!非常感谢您的帮助和意见。它有效。

以上是关于在 Woocommerce 订单管理列表中显示用户失败并取消订单计数的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce - 如何在自定义页面上显示当前用户的订单?

在 Woocommerce 的管理订单详细信息部分显示自定义结帐字段值

在 WooCommerce 中将列添加到管理订单列表

在 WooCommerce 我的帐户订单列表上显示产品缩略图

在 WooCommerce 管理员订单列表中添加带有付款网址的自定义列

在 WooCommerce 管理订单列表中添加可排序和可搜索的“客户国家/地区”列