微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

根据 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',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")
    );
    }
}

解决方法

您在第二个函数的复合钩子中遗漏了 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 文件中。经测试有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。