Woocommerce - Изображение внешнего / партнерского продукта и заголовок для внешней ссылки (Новая вкладка)

Я начинаю программировать на wordpress и woocommerce. Мне нужна помощь после поиска Stack.

Мне нужны изображения и названия продуктов в моем магазине, чтобы они указывали на партнерскую ссылку, не просматривая страницу отдельного сообщения. И все открывается в новой вкладке.

Следил за этой темой: Woocommerce - Изображение внешнего / партнерского продукта для внешней ссылки (URL для покупки)

Я использовал код Edit # 2 от Sadoo, и у меня он отлично работает.

remove_action('woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open');
add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_open', 15);

add_action('woocommerce_before_shop_loop_item', 'woocommerce_add_aff_link_open', 10);
add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_add_aff_link_close', 10);

function woocommerce_add_aff_link_open(){
  $product = wc_get_product(get_the_ID());
  if( $product->is_type( 'external' ) )
    echo '<a href="' . $product->get_product_url() . '" class="woocommerce-LoopProductImage-link">';
}

function woocommerce_add_aff_link_close(){
  $product = wc_get_product(get_the_ID());
  if( $product->is_type( 'external' ) )
    echo '</a>';
}

Мне просто нужен заголовок для ссылки, как на изображении, и все открывается в новых вкладках.

Может кто-нибудь подскажет, как мне продолжить?

Спасибо

ИЗОБРАЖЕНИЕ


person Enric Serra Duran    schedule 12.03.2018    source источник
comment
Если вы хотите открыть ссылку в новой вкладке, измените одну строку кода на эти echo '‹a target = _blank href ='. $ product- ›get_product_url (). 'class = woocommerce-LoopProductImage-link ›'; } Но не могли бы вы уточнить заголовок? Что значит название, подобное изображению?   -  person Oleg Apanovich    schedule 12.03.2018
comment
Идеально! изображения открываются в новой вкладке! Простите мое определение. Я хочу, чтобы название продукта также указывало на партнерскую ссылку. Прилагаю изображение, чтобы было нагляднее. Спасибо огромное Олегу Апановичу. :)   -  person Enric Serra Duran    schedule 13.03.2018


Ответы (2)


Если вы хотите открыть ссылку, прикрепленную к изображению, в новой вкладке для внешних продуктов на странице вашего магазина, отредактируйте свой код следующим образом

remove_action('woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open');
add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_open', 15);
add_action('woocommerce_before_shop_loop_item', 'woocommerce_add_aff_link_open', 10);
add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_add_aff_link_close', 10);

function woocommerce_add_aff_link_open(){
    $product = wc_get_product(get_the_ID());

    if( $product->is_type( 'external' ) ) {
        echo '<a target="_blank" href="' . $product->get_product_url() . '" class="">';
    }
}

function woocommerce_add_aff_link_close(){
    $product = wc_get_product(get_the_ID());

    if( $product->is_type( 'external' ) ) {
        echo '</a>';
    }
}

Затем, если вы хотите, чтобы заголовок был открыт в новой вкладке с внешней ссылкой, чем добавьте эту переопределенную функцию woocommerce в свой файл functions.php вашей темы.

function woocommerce_template_loop_product_link_open() {
    global $product;

    if( $product->is_type( 'external' ) ) {
        $link = apply_filters( 'woocommerce_loop_product_link', $product->get_product_url(), $product );
        echo '<a target="_blank" href="' . esc_url( $link ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
    } else {
        $link = apply_filters( 'woocommerce_loop_product_link', get_the_permalink(), $product );
        echo '<a href="' . esc_url( $link ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
    }
} 
person Oleg Apanovich    schedule 13.03.2018

Вот более понятный подход к тому, как вы добавляете target="_blank" к ссылкам на страницах архива, чтобы открывать их в новой вкладке:

function ns_open_in_new_tab($args, $product) 
{
    if( $product->is_type('external') ) {
        // Inject target="_blank" into the attributes array
        $args['attributes']['target'] = '_blank';
    }    

    return $args;
}
add_filter( 'woocommerce_loop_add_to_cart_args', 'ns_open_in_new_tab', 10, 2 );

Замените часть ns_ сокращением вашего собственного пространства имен.

person Banago    schedule 28.02.2019
comment
лучшее решение в моих глазах. Спасибо - person Orlando P.; 15.08.2019