Intereting Posts
Ошибка HTTP HTTP: не удалось подключиться к узлу для RSS-каналов в одном домене register_nav_menus, затем программно создавать меню Почему мое загруженное изображение было загружено в / uploads / 2015/02 not / uploads / 2016/01? Ajax не работает (ожидается 0) Почему флажок «Быстрое редактирование» сохраняет значение только при снятии флажка? Сделать следующую ссылку для ссылки на случайную запись Добавить родителя в список подстраниц Как сохранить данные в кэше клиента пользователя Изменить RSS – удалить изображение и добавить текст Таблица списков WP в пользовательском типе сообщений Постоянная ссылка, связывает страницу с главной страницей Несколько экземпляров wp_editor в пользовательском типе сообщений с использованием Ajax Как пользователю WP_Query снизить количество запросов плагин получает значение от страницы панели администратора Переменная равна другой переменной, а затем равна другой переменной

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

Моя 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 });