Добавить кнопку действия в Woocommerce мои заказы аккаунта, которые открываются в новом окне - PullRequest
2 голосов
/ 15 мая 2019

Я собираюсь добавить кнопку из своего аккаунта, чтобы перейти на определенный URL. Я сделал кнопку, но я хочу открыть ее в новом окне вместо того, чтобы перейти на страницу. Что я должен делать? Ниже приведен код, который я добавил, и я хотел бы открыть здесь URL с помощью клетки:

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" к каждой дополнительной настраиваемой кнопке?

Ответы [ 3 ]

0 голосов
/ 15 мая 2019

Вы можете изменить его в шаблоне myaccount \ my-orders.php, строка 76. Проверьте здесь , чтобы увидеть, как сделать шаблон woocommerce

echo '<a target = "_blank" href="' . esc_url( $action['url'] ) . '" class="button ' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
0 голосов
/ 16 мая 2019

@ LoicTheAztec Могу ли я сделать так, чтобы кнопка появлялась только тогда, когда заказ «выполнен»?

добавить "if ($ order-> has_status ('complete')) {"

// 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
}
0 голосов
/ 15 мая 2019

Используйте следующее, чтобы добавить к каждому конкретному HTML-тегу действия атрибут target со значением _blank, открывающим ссылку в новом окне:

// 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...