Поддержка WooCommerce Как вывести текстовый блок на определенных страницах товаров в Woocommerce?

  • Всем привет! Подскажите специалисты как вывести текстовый блок через хук, на определенных страницах товаров. Пишу вот такую функцию для файла function.php

    add_action( ‘woocommerce_before_add_to_cart_form’, ‘my_infa’ );
    function my_infa() {
    if (is_product(‘stedt-dh-150’)) {
    echo ‘Акция!!! подарок’;
    }
    }
    По такому коду выводит «Акция!!! подарок» на всех страницах с товаром, хотя нужно только на странице со слагом stedt-dh-150 и еще пару страниц (как их перечислить в коде?). Подскажите как правильно написать, чтоб работало.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • if (is_product('stedt-dh-150')) {
    Откуда Вы взяли, что этой функции можно что-то (слаг?) передавать в качестве аргумента?

    По всей видимости, проверку придется делать как-то так:

    global $post;
    if ( is_product() and in_array($post->post_name, array('slug-1', 'slug-2', 'slug-3')) )
    
    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, wpcute.ru

    Привет.

    Также можно попробовать проверить по ID:

    add_action( 'woocommerce_before_add_to_cart_form', 'my_infa' );
    function my_infa() {
        if ( is_product() && get_the_ID() == 10 ) {
            echo 'Акция!!! подарок';
        }
    }

    Добрый день! Спасибо «Спецам» за ответы. Первый вариант заработал:

    add_action( 'woocommerce_before_add_to_cart_form', 'my_infa' );
    function my_infa() {
        global $post;
    if ( is_product() and in_array($post->post_name, array('wsm-150','2nk-150')) ) {
            echo 'Акция!!! подарок';
        }
    }

    Второй вариант по ID почему-то нет, но может я ID 3167 и 3150 не правильно перечислил и не туда вписал, проверьте,если что поправьте,чтоб проверить и этот вариант.

    add_action( 'woocommerce_before_add_to_cart_form', 'my_infa' );
    function my_infa() {
        if ( is_product() && get_the_ID('3167','3150') == 10 ) {
            echo 'Акция!!! подарок';
        }
    }
    • Ответ изменён 3 месяца, 3 недели назад пользователем  zniko.
    • Ответ изменён 3 месяца, 3 недели назад пользователем  Denis Yanchevskiy. Причина: оформление кода
    • Ответ изменён 3 месяца, 3 недели назад пользователем  zniko.
    • Ответ изменён 3 месяца, 3 недели назад пользователем  zniko.
    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, wpcute.ru

    но может я ID 3167 и 3150 не правильно перечислил и не туда вписал, проверьте,если что поправьте,чтоб проверить и этот вариант.

    Да, неправильно. Если Вам нужно проверить несколько ID, то примерно так:

    add_action( 'woocommerce_before_add_to_cart_form', 'my_infa' );
    function my_infa() {
        $ids = array( 3167, 3150 );
        if ( is_product() && in_array( get_the_ID(), $ids ) ) {
            echo 'Акция!!! подарок';
        }
    }

    Спасибо, этот вариант тоже прекрасно работает.

Просмотр 6 ответов — с 1 по 6 (всего 6)