Прежде чем начать, я хочу признать, что есть несколько действительно хороших статей, нацеленных на то, как условно ставить сценарии в очередь на основе содержимого страницы / публикации.
- Разработка плагинов для WordPress - Как включить CSS и JavaScript условно и только при необходимости
- Как загрузить JavaScript как WordPress Master
Это здорово, но они намного более продвинуты, чем я хочу.
Мне кажется, что ответом является использование встроенной is_page()
функции ( кодекса ), но когда я пытаюсь ее использовать, сайт ломается или просто не работает.
Я думаю, что я просто выполняю условную логику в неправильном месте.
Вот что я пытался добавить в мои functions.php:
function wpse39130_register_more_stylesheets() {
wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
}
add_action( 'init', 'wpse39130_register_more_stylesheets' );
function wpse39130_conditionally_enqueue_my_stylesheet() {
// only enqueue on product-services page slug
if ( is_page( 'products-services' ) ) {
wp_enqueue_style( 'stylesheet_name' );
}
}
add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );
Когда я удаляю условную часть, таблица стилей успешно ставится в очередь, поэтому я знаю, что это работает.
css
conditional-content
wp-enqueue-style
Эван Маттсон
источник
источник
Ответы:
Я скопировал, вставил твой код в мою среду разработки, ничего не изменил, кроме имени страницы, и он работает просто отлично. Вы уверены, что это не ставится в очередь, и вы просто указали неправильно или что страница не названа неправильно или что-то еще?
источник
То, что у вас есть, правильно - вы просто подключаете это к неправильному действию. Попробуйте действие «wp» вместо «init». Когда запускается init, is_page () не будет работать должным образом.
РЕДАКТИРОВАТЬ: я не прав. Я думал, вы добавили add_my_stylesheet к init, но это не так. is_page должен работать из действия enqueue_scripts. Извините ... продолжайте ...
источник
Я пытался следовать тому же коду и посмотреть, смогу ли я получить тот же результат, что я заметил is_page () не работает, как ожидалось. поэтому я последовал за глобальной переменной $ post и проверил название категории / слаг, а последние используют простое сравнение текста, чтобы принять решение о действии.
Значение категории, если ее только одна категория (не подкатегория) будет
Для подкатегории у вас будет заполнена следующая переменная
Теперь, исходя из ваших потребностей, используйте код ниже, как я использую для проверки названия подкатегории:
Полный код:
Пример: * Нет лишних CSS http://whatsq.com/category/gst16/
* Дополнительный CSS с фоном только из вышеуказанной категории http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- и больше/
источник