2016-02-06 3 views
1

Я пытаюсь настроить WooCommerce связи внешнего устройства, чтобы открыть в новых вкладках ...Open WooCommerce Внешние продукты в New Tab

Это моя попытка:

добавлен фильтр к теме WordPress функции .php файл как:

add_filter('woocommerce_product_add_to_cart_url', 'woocommerce_externalProducts_openInNewTab'); 

function woocommerce_externalProducts_openInNewTab($product_url) { 

    global $product; 

    if ($product->is_type('external')) { 
     $product_url = $product->get_product_url() . '"target="_blank""'; 
    } 

    return $product_url; 

} 

Что я пропустил?

+0

это не будет работать, потому что URL является ссылка ... вы добавляете некоторые тексты на ссылку, это то, что вы делаете сейчас .. – Reigel

ответ

3

что вы сейчас делаете неправильно ... get_product_url назван как то, что он делает. Это даст вам url ... не html-якорь, у которого есть URL-адрес, а только URL-адрес .. так что вы просто добавляете текст в url .. вот что вы делаете ...

One решение дается @Ash Patel. Вы можете изменить разметку с помощью шаблонов ... просто перейдите в свою папку с плагином и найдите этот файл. woocommerce\templates\single-product\add-to-cart\external.php. Вы можете найти инструкции внутри него.

Теперь, иногда, нам не нравится редактирования шаблонов ... особенно если это только незначительные изменения, как это ...

Ниже код будет делать это так, как вы хотите его ... просто вставить этот код в вашей теме functions.php.

remove_action('woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30); 
add_action('woocommerce_external_add_to_cart', 'rei_external_add_to_cart', 30); 
function rei_external_add_to_cart(){ 

    global $product; 

    if (! $product->add_to_cart_url()) { 
     return; 
    } 

    $product_url = $product->add_to_cart_url(); 
    $button_text = $product->single_add_to_cart_text(); 

    do_action('woocommerce_before_add_to_cart_button'); ?> 
    <p class="cart"> 
     <a href="<?php echo esc_url($product_url); ?>" target="_blank" rel="nofollow" class="single_add_to_cart_button button alt"><?php echo esc_html($button_text); ?></a> 
    </p> 
    <?php do_action('woocommerce_after_add_to_cart_button'); 
} 
+0

Большое спасибо @Reigel, не могли бы вы объяснить мне, что do_action ('woocommerce_before_add_to_cart_button'); 'и' do_action ('woocommerce_after_add_to_cart_button'); 'do? – Homer

+1

те, что включены в шаблон .. для согласованности, я положил его ... вы можете удалить его без забот ... – Reigel

+2

это потому, что другие плагины могут его использовать ... – Reigel

2

Удалить выше Funtion из function.php:

Используйте плагин файлы из папки шаблонов методом Шаблон перезаписью, а затем

продолжением ниже пути: WooCommerce \ Шаблоны \ монопродуктового \ добавить к корзину \ external.php

открыть внешний.php, где есть тег, применить target = "_ blank".

будет работать.

+0

не редактируют плагинов .. плохая идея ... – Reigel

+0

я имею в виду, что вы можете использовать файл плагина из своего каталога тем, используя шаблонную перезапись и применяя код без нарушения файлов плагина. –

+0

Вы можете перефразировать свой ответ выше. – Reigel