我要从我的帐户订单中添加一个按钮,使其转到特定的网址。 我做了一个按钮,但是我想用一个新窗口打开它,而不是转到页面。我该怎么办? 下面是我添加的代码,我想在这里用笼子打开网址:
function sv_add_my_account_order_actions( $actions, $order ) {
$actions['name'] = array(
'url' => 'the_action_url',
'name' => 'The Button Text',
);
return $actions;
}
add_filter( 'woocommerce_my_account_my_orders_actions', 'sv_add_my_account_order_actions', 10, 2 );
如何向每个其他自定义按钮添加target="_blank"
?
答案 0 :(得分:0)
使用以下代码将为target
属性添加_blank
值的属性添加到每个特定的html标记中,在新窗口中打开链接:
// Your additional action button
add_filter( 'woocommerce_my_account_my_orders_actions', 'add_my_account_my_orders_custom_action', 10, 2 );
function add_my_account_my_orders_custom_action( $actions, $order ) {
$action_slug = 'specific_name';
$actions[$action_slug] = array(
'url' => home_url('/the_action_url/'),
'name' => 'The Button Text',
);
return $actions;
}
// Jquery script
add_action( 'woocommerce_after_account_orders', 'action_after_account_orders_js');
function action_after_account_orders_js() {
$action_slug = 'specific_name';
?>
<script>
jQuery(function($){
$('a.<?php echo $action_slug; ?>').each( function(){
$(this).attr('target','_blank');
})
});
</script>
<?php
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。
您将必须在两个函数中设置相同的唯一和明确的
$action_slug
变量。
要仅完成目标订单,只需在第一个功能中添加if ( $order->has_status('completed') ) {
,例如:
add_filter( 'woocommerce_my_account_my_orders_actions', 'add_my_account_my_orders_custom_action', 10, 2 );
function add_my_account_my_orders_custom_action( $actions, $order ) {
if ( $order->has_status( 'completed' ) ) {
$action_slug = 'specific_name';
$actions[$action_slug] = array(
'url' => home_url('/the_action_url/'),
'name' => 'The Button Text',
);
}
return $actions;
}
答案 1 :(得分:0)
您可以在myaccount \ my-orders.php模板的第76行中对其进行更改。 检查here,了解如何制作woocommerce模板
echo '<a target = "_blank" href="' . esc_url( $action['url'] ) . '" class="button ' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
答案 2 :(得分:0)
@LoicTheAztec 我可以这样做以使按钮仅在订单“完成”时才会出现吗?
添加“ if($ order-> has_status('completed')){”
// Your additional action button add_filter( 'woocommerce_my_account_my_orders_actions', 'add_my_account_my_orders_custom_action', 10, 2 ); function add_my_account_my_orders_custom_action( $actions, $order ) { if ( $order->has_status( 'completed' ) ) { $action_slug = 'specific_name'; $actions[$action_slug] = array( 'url' => home_url('/the_action_url/'), 'name' => 'The Button Text', ); } return $actions; } // Jquery script add_action( 'woocommerce_after_account_orders', 'action_after_account_orders_js'); function action_after_account_orders_js() { $action_slug = 'specific_name'; ?> <script> jQuery(function($){ $('a.<?php echo $action_slug; ?>').each( function(){ $(this).attr('target','_blank'); }) }); </script> <?php }
答案 3 :(得分:-1)
要仅完成目标订单,请添加($ order-> has_status('completed'))
不是状态(“已完成”)
我想显示基于所购买产品的按钮,例如基于产品名称或ID