Intereting Posts
Анимация WOW.js работает на одном сервере, копируется на новый сервер и перестает работать Изменить дату с 2015/02/23 до "1 мин. Назад" Как добавить WordPress nonces в ajax-запрос Интеграция Галерея Nextgen с Gallerific admin-ajax.php (прерванная) ошибка при использовании jQuery.get Как публиковать страницу, которая не может быть обнаружена поисковыми системами? functions.php Как добавить css / js в зависимости от имени шаблона? Сделать ссылку меню открытой на новой вкладке? Разное количество сообщений на домашней странице, чем страницы с постраничным доступом Отображать метабокс условно Автоматическое обновление Admin мешает Firebug – как его предотвратить? Исключить категорию из короткого кода Какая разница, если я включу поддержку формата видеопоста? Совет для начинающих в WordPress Как узнать, который является текущим запросом при использовании пользовательских запросов?

Применить сценарий jquery только к страницам и категориям товаров woocommerce

У меня есть этот скрипт, который автоматически прокручивается до основного содержимого при загрузке страницы.

jQuery(document).ready(function($){ if ( $(window).width() < 768 || window.Touch) { $('html, body').animate({ scrollTop: $("#primary").offset().top}, 2000);} }); 

1. Однако я хотел бы применить его только к нашим страницам и категориям товаров в woocommerce, чтобы он не работал на страницах дома / блога. Как я могу это сделать?

Я могу сделать это плохо , отредактировав основные файлы WooCommerce, но я знаю, что это ужасная идея, поэтому я ищу помощь в том, как сделать это правильно через мой файл functions.php.

2. Также я хотел бы знать, как применять его ко всем страницам, за исключением того, что главная страница должна быть лучшим вариантом позже.

Большое спасибо!

Solutions Collecting From Web of "Применить сценарий jquery только к страницам и категориям товаров woocommerce"

Есть два способа сделать это.

1. Использование только JS

Темы WordPress обычно используют body_class() . В результате вы увидите, что <body> будет иметь множество классов. Затем вы можете нацеливать страницы с определенным классом для запуска кода в JavaScript:

 if( $('body.whateverclass').length || $('body.anotherclass').length ){ // Your JS code here } 

2. Использование PHP

Вы можете использовать wp_localize_script() для отправки флага в свой код.

Предположим, вы выделили файл с именем site.js с именем дескриптора site , в вашем functions.php вас будет:

 wp_register_script( 'site', 'path/to/site.js' ); wp_enqueue_script( 'some_handle' ); 

Теперь вы можете добавить несколько флагов:

  wp_register_script( 'site', 'path/to/site.js' ); # Unchanged $value = ''; if ( is_shop() || is_some_other_condition() ){ $value = 'yes'; } wp_localize_script( 'site', 'MYSITE', $value ); wp_enqueue_script( 'some_handle' ); # Unchanged 

Затем вы можете проверить переменную MYSITE в JavaScript:

 if( 'yes' === MYSITE ){ // Your JS code here } 

Edit: Вы спросили, как положить его в footer.php:

 <script> jQuery(document).ready(function($){ if( $('body.product-template-default').length || $('body.anotherclass').length ){ if ( $(window).width() < 768 || window.Touch) { $('html, body').animate({ scrollTop: $("#primary").offset().top}, 2000); } } }); </script> 

Шаг 1: сохраните код в виде нового js-файла, скажем main.js

Шаг 2: добавьте условную функцию в function.php вашей темы, которая будет говорить что-то вокруг строк:

 if (is_shop() || is_product_category()) { wp_enqueue_script('main', get_template_directory_uri() . '/js/main.js', false, false, true); } 

Проверьте эту страницу для условных тегов, исходя из ваших потребностей:

https://docs.woocommerce.com/document/conditional-tags/

Надеюсь, поможет!

Редактировать:

Для встроенных скриптов вы можете сделать (например, внутри footer.php):

 if (is_shop() || is_product_category()) { <script> jQuery(document).ready(function($){ if ( $(window).width() < 768 || window.Touch) { $('html, body').animate({ scrollTop: $("#primary").offset().top}, 2000); } }); </script> }