Отображение атрибутов продукта WooCommerce на странице магазина

Вопрос или проблема

Я пытаюсь вывести атрибут Приложений с словом Приложения перед элементами, которые он отображает. Код у меня работает и выводит элементы, но мне нужно, чтобы текст Приложения отображался только тогда, когда есть какие-то с этим продуктом.

add_action( 'woocommerce_after_shop_loop_item_title', 'display_applications_attribute', 5 );
function display_applications_attribute() {
    global $product;

    
        $taxonomy = 'pa_applications';
        echo '<span class="attribute-applications">Приложения: ' . $product->get_attribute($taxonomy) . '</span>';
    }


Просто сделайте проверку, есть ли доступные приложения, и если да, то выведите их. Вот пример:

add_action( 'woocommerce_after_shop_loop_item_title', 'display_applications_attribute', 5 );

function display_applications_attribute() {
    global $product;

    $applications = $product->get_attribute('pa_applications');
    
    if ( $applications ) {
        printf('<span class="attribute-applications">Приложения: %1$s</span>', $applications );
    }
}

Ответ или решение

Для того чтобы вывести атрибут "Применения" на странице магазина WooCommerce с соответствующим текстом "Применения", можно воспользоваться хуком woocommerce_after_shop_loop_item_title. Данный код позволяет проверить, есть ли у продукта указанный атрибут, и только в этом случае отображает его.

Вот как можно реализовать вашу задачу:

add_action( 'woocommerce_after_shop_loop_item_title', 'display_applications_attribute', 5 );

function display_applications_attribute() {
    global $product;

    // Получаем атрибут "pa_applications"
    $applications = $product->get_attribute( 'pa_applications' );

    // Проверяем, есть ли атрибут, и если да, выводим его
    if ( ! empty( $applications ) ) {
        printf( '<span class="attribute-applications">Применения: %1$s</span>', esc_html( $applications ) );
    }
}

Объяснение кода:

  1. Добавление действия: add_action( 'woocommerce_after_shop_loop_item_title', 'display_applications_attribute', 5 ); связываем функцию display_applications_attribute с хуком, который executes после заголовка товара на странице магазина.

  2. Получение глобального объекта продукта: Используем global $product; для доступа к текущему продукту.

  3. Получение атрибута: Переменная $applications получает значение атрибута ‘pa_applications’ с помощью метода $product->get_attribute().

  4. Проверка на наличие значений: С помощью if ( ! empty( $applications ) ) проверяем, что атрибут не пуст. Если он присутствует, то выполняем вывод.

  5. Вывод результата: Используя printf(), выводим текст "Применения:" и сам атрибут. Функция esc_html() используется для безопасного вывода текста, чтобы избежать потенциальных уязвимостей.

Таким образом, данный код будет отображать атрибут "Применения" только в том случае, если он есть у товара, что решает вашу задачу. Не забудьте добавить этот код в файл functions.php вашей темы или в функциональность вашего плагина.

Оцените материал
Добавить комментарий

Капча загружается...