在 WooCommerce 我的帐户订单自定义列中添加“支付订单”按钮

Posted

技术标签:

【中文标题】在 WooCommerce 我的帐户订单自定义列中添加“支付订单”按钮【英文标题】:Add "Pay for order" Button in WooCommerce My account Orders Custom Column 【发布时间】:2021-06-08 01:24:21 【问题描述】:

根据 LoicTheAztec 对Add a pay order button on WooCommerce My account view order for pending orders 的回答代码,我添加了其他代码,试图让此按钮直接显示在“查看订单”端点上的自定义列中。

列存在,但按钮不存在。我也尝试在函数中将$order$order_id 切换,但没有成功。

这是我正在使用的代码:

add_filter( 'woocommerce_my_account_my_orders_columns', 'add_payment_column_to_myaccount', 10, 1 );
function add_payment_column_to_myaccount( $columns ) 

    $new_columns = [];

    foreach ($columns as $key => $name)

        $new_columns[$key] = $name;

        if ('order-actions' === $key)

            $new_columns['pay-order'] = __('Payment', 'woocommerce');
        
    

    return $new_columns;


add_action( 'woocommerce_my_account_my_orders_column_order-items', 'add_pay_for_order_to_payment_column_myaccount', 10, 1);
function add_pay_for_order_to_payment_column_myaccount( $order ) 

    $order = wc_get_order( $order_id );

    if ( $order->get_status() == "pending" || $order->get_status() == "on-hold" ) 

        printf('<a class="woocommerce-button button pay" href="%s/order-pay/%s/?pay_for_order=true&key=%s">%s</a>',

        wc_get_checkout_url(), $order_id, $order->get_order_key(), __("Pay for this order", "woocommerce")
    );
    

【问题讨论】:

【参考方案1】:

您在第二个函数的复合挂钩中错过了pay-order

woocommerce_my_account_my_orders_column_$column_key

其中$column_key 需要替换为pay-order(但不是order-items

还有一些其他的错误。请尝试以下操作:

add_filter( 'woocommerce_my_account_my_orders_columns', 'add_payment_column_to_myaccount' );
function add_payment_column_to_myaccount( $columns ) 
    $new_columns = [];

    foreach ($columns as $key => $name)
        $new_columns[$key] = $name;

        if ('order-actions' === $key)
            $new_columns['pay-order'] = __('Payment', 'woocommerce');
        
    
    return $new_columns;


add_action( 'woocommerce_my_account_my_orders_column_pay-order', 'add_pay_for_order_to_payment_column_myaccount' );
function add_pay_for_order_to_payment_column_myaccount( $order ) 
    if( in_array( $order->get_status(), array( 'pending', 'on-hold' ) ) ) 
        printf( '<a class="woocommerce-button button pay" href="%s/order-pay/%s/?pay_for_order=true&key=%s">%s</a>',
            wc_get_checkout_url(), $order->get_id(), $order->get_order_key(), __("Pay for this order", "woocommerce")
        );
    

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

【讨论】:

以上是关于在 WooCommerce 我的帐户订单自定义列中添加“支付订单”按钮的主要内容,如果未能解决你的问题,请参考以下文章

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

在 WooCommerce 上添加支付订单按钮我的帐户查看订单待处理订单

如何在 WooCommerce 编辑订单中计算自定义订单总额?

有条件地从 WooCommerce 我的帐户订单中删除取消按钮

WooCommerce:将端点分配给我的帐户页面中的自定义模板

WooCommerce 我的帐户页面的自定义电话号码占位符