将操作按钮添加到Woocommerce我的在新窗口中打开的帐户订单

时间:2019-05-15 07:10:04

标签: php jquery wordpress woocommerce attributes

我要从我的帐户订单中添加一个按钮,使其转到特定的网址。 我做了一个按钮,但是我想用一个新窗口打开它,而不是转到页面。我该怎么办? 下面是我添加的代码,我想在这里用笼子打开网址:

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"

4 个答案:

答案 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