php - 在 WooCommerce 我的帐户订单自定义列中添加“支付订单”按钮
问题描述
根据 LoicTheAztec在 WooCommerce 上添加支付订单按钮的答案代码 我的帐户查看待处理订单的订单,我添加了其他代码,试图让此按钮直接显示在“查看订单”端点的自定义列中.
列在那里,但按钮不在。我也尝试过在函数中切换$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")
);
}
}
解决方案
您错过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 文件中。测试和工作。
推荐阅读
- java - Eclipse调试到java源,不列出源类的成员变量
- objective-c - glClearStencil(AStencil)的金属当量是多少
- python - 打开一个文本文件以在 spyder 中使用
- scala - “错误:前向引用扩展了变量计数器的定义”
- python - 如何从经纬度过滤国家?
- c - C项目结构、代码共享和编译代码的依赖
- php - 在 Codeigniter 中使用哈希值比较密码无效
- vb.net - 获取用户单击具有许多控件的 Windows 窗体的位置
- json - 在json颤动中获取对象
- angular - Firebase:应该在 Angular 项目中使用 Promise 还是 Observable?