Intereting Posts
Тагирование формы пользовательской формы запроса Как перенаправить на страницу после отправки формы Woocommerce – Показать текст на странице продукта на основе класса доставки Представлено для просмотра на страницу с черновиком получение содержимого страницы на AJAX Echoing Содержимое короткого кода внутри цикла Большинство изображений не отображаются, хотя URL-адреса верны Только короткий код видео Возврат ссылки Класс Post применяется только к первой выдержке; Зачем? Список авторов – изменение, чтобы показывать авторов, а не подписчиков Оптимизация скорости на сайте WP, Удаление строк запроса из статических ресурсов Использование wp_handle_upload и media_handle_sideload с ajax Список всех сообщений, страниц и пользовательских типов сообщений в admin Отключить доступ к ревизии для определенной роли пользователя Могу ли я использовать отношение OR для одного элемента при вызове tax_query из WP_Query и использовать AND для остальных?

Как я могу позволить шаблонам выбирать, какие таблицы стилей находятся в очереди?

Моя functions.php перехватывает wp_enqueue_scripts чтобы зарегистрировать пару таблиц стилей, которые используются различными страницами сайта. Вот упрощенная версия моей конфигурации:

 add_action("wp_enqueue_scripts", function() { // This stylesheet is used on *every* page wp_register_style("sitewide", get_template_directory_uri() . "/assets/sitewide.css"); wp_enqueue_style("sitewide"); // These stylesheets are used by *some* pages wp_register_style("pagetype1", get_template_directory_uri() . "/assets/pagetype1.css", array("sitewide")); wp_register_style("pagetype2", get_template_directory_uri() . "/assets/pagetype2.css", array("sitewide")); }); по add_action("wp_enqueue_scripts", function() { // This stylesheet is used on *every* page wp_register_style("sitewide", get_template_directory_uri() . "/assets/sitewide.css"); wp_enqueue_style("sitewide"); // These stylesheets are used by *some* pages wp_register_style("pagetype1", get_template_directory_uri() . "/assets/pagetype1.css", array("sitewide")); wp_register_style("pagetype2", get_template_directory_uri() . "/assets/pagetype2.css", array("sitewide")); }); 

Каждый учебник, который я нашел до сих пор, помещает каждую таблицу стилей из самого обратного вызова, но я не хочу этого делать. Я предполагаю, что это приведет к тому, что все мои таблицы стилей будут включены на каждую страницу, чего я не хочу. Я хочу только enqueue pagetype1.css если базовый шаблон для определенной страницы использует его.

Предположим, что я хочу, чтобы моя первая страница использовала стили страницы типа 1. Моей интуицией было бы назвать wp_enqueue_style("pagetype1"); в front_page.php перед включением заголовка, который содержит wp_head() . Это ничего не делает. С другой стороны, CSS с CSS был включен, как я и ожидал. Что я делаю не так?

Я знаю, что есть обходной путь, но я бы предпочел, чтобы front-page.php сохранял контроль над тем, какие дополнительные таблицы стилей загружаются.


Edit : Это то, с чем я закончил, после некоторого обсуждения с toscho . Я добавил это в functions.php :

 // Enqueues a stylesheet handle or an array of stylesheet handles. function mytheme_enqueueStyle($handles) { if (is_array($handles)) { add_action("wp_enqueue_scripts", function() use ($handles) { foreach ($handles as $handle) { wp_enqueue_style($handle); } }); } else if (is_string($handles)) { add_action("wp_enqueue_scripts", function() use ($handles) { wp_enqueue_style($handles); }); } else { wp_die("Unsupported parameter type."); } } 

Затем я вызывал mytheme_enqueueStyle("pagetype1") из front-page.php чтобы поставить в очередь таблицу стилей. Тем не менее этот способ делать вещи оказался несовместимым с WP Minify.

Solutions Collecting From Web of "Как я могу позволить шаблонам выбирать, какие таблицы стилей находятся в очереди?"

Проверьте текущий шаблон в своем обратном вызове. Это мета-поле _wp_page_template именем _wp_page_template .

 add_action("wp_enqueue_scripts", function() { // This stylesheet is used on *every* page wp_register_style("sitewide", get_template_directory_uri() . "/assets/sitewide.css"); wp_enqueue_style("sitewide"); if ( ! is_singular() ) return; $template = get_post_meta( get_the_ID(), '_wp_page_template', TRUE ); // now enqueue further stylesheets depending on the current template }); по add_action("wp_enqueue_scripts", function() { // This stylesheet is used on *every* page wp_register_style("sitewide", get_template_directory_uri() . "/assets/sitewide.css"); wp_enqueue_style("sitewide"); if ( ! is_singular() ) return; $template = get_post_meta( get_the_ID(), '_wp_page_template', TRUE ); // now enqueue further stylesheets depending on the current template });