【问题标题】:Add a column with coupons used on admin Orders list in Woocommerce在 Woocommerce 的管理订单列表中添加包含优惠券的列
【发布时间】:2019-04-02 04:57:31
【问题描述】:

我试图在订单管理屏幕(WooCommerce 中列出所有订单)上直接显示使用的优惠券,但由于某种原因,它给了我一个致命错误,因为中断。

这里是代码->

add_filter( 'manage_shop_order_posts_columns', 'woo_customer_order_coupon_column_for_orders', 99 );
function woo_customer_order_coupon_column_for_orders( $columns ) {
$columns['order_coupon'] = __('Coupon', 'woocommerce');
return $columns;
}

add_action( 'manage_shop_order_posts_custom_column' , 'woo_display_customer_order_coupon_in_column_for_orders', 10, 2 );
function woo_display_customer_order_coupon_in_column_for_orders( $column_name, $order_id, $order ) {
    switch ( $column_name ) {
        case 'order_coupon':
        if( $order->get_used_coupons() ) {
        $coupons_count = count( $order->get_used_coupons() );
        echo '<h4>' . __('Coupons Used') . ' (' . $coupons_count . ')</h4>';
        echo '<p><strong>' . __('Coupons Used') . ':</strong> ';
        $i = 1;

        foreach( $order->get_used_coupons() as $coupon) {
            echo $coupon;
            if( $i < $coupons_count )
                echo ', ';
            $i++;
        }
        echo '</p>';
    } } break; }



add_filter( "manage_edit-shop_order_sortable_columns", 'woo_ordercoupon_sortable' );
function woo_ordercoupon_sortable( $columns ) {
$custom = array (
'order_coupon'    => 'Coupon', );
return wp_parse_args( $custom, $columns ); }

非常感谢任何有关如何解决此问题的想法。

【问题讨论】:

    标签: php wordpress woocommerce backend orders


    【解决方案1】:

    您的代码中存在一些错误和错误……请尝试以下操作:

    add_filter( 'manage_edit-shop_order_columns', 'woo_customer_order_coupon_column_for_orders' );
    function woo_customer_order_coupon_column_for_orders( $columns ) {
        $new_columns = array();
    
        foreach ( $columns as $column_key => $column_label ) {
            if ( 'order_total' === $column_key ) {
                $new_columns['order_coupons'] = __('Coupons', 'woocommerce');
            }
    
            $new_columns[$column_key] = $column_label;
        }
        return $new_columns;
    }
    
    add_action( 'manage_shop_order_posts_custom_column' , 'woo_display_customer_order_coupon_in_column_for_orders' );
    function woo_display_customer_order_coupon_in_column_for_orders( $column ) {
        global $the_order, $post;
        if( $column  == 'order_coupons' ) {
            if( $coupons = $the_order->get_used_coupons() ) {
                echo implode(', ', $coupons) . ' ('.count($coupons).')';
            } else {
                echo '<small><em>'. __('No coupons') . '</em></small>';
            }
        }
    }
    

    代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    (这不能是可排序的列)

    【讨论】:

    • 非常感谢您的帮助。效果很好。
    • wocommerce 3.7 或更高版本需要使用 get_coupon_codes() 代替 get_used_coupons()
    • @Machumahara 你错了,因为没有WC_Abstract_OrderWC_Order 方法get_coupon_codes()... WC_Abstract_Order method get_used_coupons() 即使在最后一个Woocommerce 版本4.1.x 中仍然存在
    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2020-11-20
    • 2021-04-15
    • 1970-01-01
    • 2017-08-03
    • 2019-03-16
    相关资源
    最近更新 更多