Отобразить уведомление / демонстрационный магазин магазина WooCommerce для определенного продукта / категории - PullRequest
0 голосов
/ 09 февраля 2019

Я хотел бы отобразить уведомление магазина WooCommerce не для всего сайта, а только для определенных категорий или продуктов.Я хотел бы отобразить его на woocommerce_before_shop_loop и woocommerce_before_single_product.Как в этих наглядных пособиях:

https://businessbloomer.com/woocommerce-visual-hook-guide-archiveshopcat-page/ https://businessbloomer.com/woocommerce-visual-hook-guide-single-product-page/

Как этого добиться?Я думал, что смогу распечатать уведомление магазина WooCommerce с woocommerce_demo_store, но оно не сработало.Спасибо.

add_action( 'woocommerce_before_shop_loop', 'woocommerce_demo_store' );

Это ничего не показывает

woocommerce_demo_store это крючок woocommerce http://hookr.io/filters/woocommerce_demo_store/

1 Ответ

0 голосов
/ 09 февраля 2019

Сначала мы удалим действие, которое отображает уведомление о магазине по умолчанию:

remove_action( 'wp_footer', 'woocommerce_demo_store' );

Мы добавим уведомление о магазине в нужном месте на выбранных страницах:

if ( is_product_category( array( 'clothing', 'decor' ) ) ) {
    add_action( 'woocommerce_before_shop_loop', 'woocommerce_demo_store' );
}

Измените 'clothing', 'decor' с помощью slug для вашей категории продуктов.

if ( is_single( array( 159, 160 ) ) ) {
    add_action( 'woocommerce_before_single_product', 'woocommerce_demo_store' );
}

Измените '159', '160' с помощью идентификатора вашего продукта.

Примечание. Вы можете использовать имя, слаг или ID во входных данных.массив для функций is_product_category() и is_single().


Вот полный код для вставки в файл functions.php вашей дочерней темы:

function lh_conditional_store_notice() {

    // Remove default 'woocommerce_demo_store' notice
    remove_action( 'wp_footer', 'woocommerce_demo_store' );

    // Add back the woocommerce_demo_store' notice, but on the selected pages
    // Show notice on the 'clothing' and 'decor' categories at 'woocommerce_before_shop_loop'
    if ( is_product_category( array( 'clothing', 'decor' ) ) ) {
        add_action( 'woocommerce_before_shop_loop', 'woocommerce_demo_store' );
    }

    // Show notice on single products having ID '159' and '160' at 'woocommerce_before_single_product'
    if ( is_single( array( 159, 160 ) ) ) {
        add_action( 'woocommerce_before_single_product', 'woocommerce_demo_store' );
    }
}
add_action( 'template_redirect', 'lh_conditional_store_notice' );

Протестированои работает на:

  • WordPress 5.0.3
  • Twentyninteen 1.2
  • WooCommerce 3.5.4
  • Localhost (XAMPP для Windows 5.6.15)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...