【问题标题】:Show used coupon in WooCommerce order quick view在 WooCommerce 订单快速查看中显示使用过的优惠券
【发布时间】:2021-04-15 03:50:15
【问题描述】:

我们使用此代码在订单上显示已使用的优惠券。这工作正常!但现在我们还想在订单快速视图中显示此信息。

我在这里找到了这个钩子:woocommerce_admin_order_preview_end

所以我试图用这个钩子从下面的代码中改变钩子。但随后快速查看功能根本不起作用。当我们点击“眼睛”打开快速视图时——什么也没发生。我们是否需要更多地调整代码或者这里有什么问题?

add_action( 'woocommerce_admin_order_data_after_billing_address', 'custom_checkout_field_display_admin_order_meta', 10, 1 );


/**
 * Add used coupons to the order edit page
 *
*/
function custom_checkout_field_display_admin_order_meta($order){

    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>';
    }

}

【问题讨论】:

    标签: php wordpress woocommerce orders coupon


    【解决方案1】:

    尝试使用以下显示管理订单快速查看(预览)中使用的优惠券:

    // Add custom order data to make it accessible in Order preview template
    add_filter( 'woocommerce_admin_order_preview_get_order_details', 'admin_order_preview_add_custom_data', 10, 2 );
    function admin_order_preview_add_custom_data( $data, $order ) {
        // Replace '_custom_meta_key' by the correct postmeta key
        if( $coupons = $order->get_used_coupons() ) {
            $data['coupons_count'] = count($coupons); // <= Store the count in the data array.
            $data['coupons_codes'] = implode(', ', $coupons); // <= Store the count in the data array.
        }
            
    
        return $data;
    }
    
    // Display The data in Order preview
    add_action( 'woocommerce_admin_order_preview_end', 'custom_display_order_data_in_admin' );
    function custom_display_order_data_in_admin(){
        // Call the stored value and display it
        echo '<div><strong>' . __('Coupons used') . ' ({{data.coupons_count}})<strong>: {{data.coupons_codes}}</div><br>';
    }
    

    代码位于活动子主题(或活动主题)的functions.php 文件中。未经测试它应该可以工作。

    基于:Display custom data on Woocommerce admin order preview

    【讨论】:

    • 谢谢!这是有效的。但是“woocommerce_admin_order_preview_end”并不是最好的地方。所以我尝试使用“woocommerce_admin_order_preview_start”,但这也不是很好。如果我们可以在发票详细信息和订单详细信息 (ibb.co/09Tk512) 之间插入它,那就太好了。为此,我尝试使用“woocommerce_admin_order_preview_get_order_details”钩子。但那是行不通的。
    • 我还有最后一个问题。抱歉 :-) .. 如果有优惠券描述,我该如何调整代码以便在那里显示优惠券描述?
    • @Nik7 你最好问一个新问题,因为这不能作为评论来回答。
    • 好吧。非常感谢这里的解决方案。将创建另一个问题:)
    猜你喜欢
    • 2020-07-28
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2021-04-09
    相关资源
    最近更新 更多