Intereting Posts
Сценарий не будет печатать на голове, если правильный путь к файлу Как установить значение формы элемента Media Box по умолчанию? Добавить в корзину кнопка woocommerce фон и с не отображается правильно Как настроить постоянную ссылку (URL)? изменить set_post_thumbnail_size в соответствии с административной страницей типа сообщения Показ фетальной ошибки после установки плагина Confused on AJAX отправить форму через шаблон страницы Запрос get_posts соответствует слишком большому количеству результатов Загрузите весь блог для автономного чтения / архивирования (без использования RSS-канала) Плагины mu-plugins все еще развернуты через wordpress.org/plugins? опубликовать конкретные пункты меню по двадцать шестнадцати темам Как перевести строку внутри сценария jQuery с WPML? Страница таксономии показывает категорию в заголовке Экспорт WordPress из одного домена в другой. wp_get_attachment_caption, чтобы вырезать надпись или alt

Динамически загружать стили и скрипты из темы Functions.php

Я пытаюсь динамически загружать таблицы стилей и скрипты на основе имени шаблона. Поэтому, если у меня есть шаблон с именем page-signup.php он будет загружать соответствующую page-signup.css stylesheet page-signup.css и page-signup.js если они существуют для этой страницы из определенного каталога в моей папке темы.

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

 /** * Auto loads scripts and styles based on the page name if they exist. */ function mytheme_bootstrap_page_resources() { if( is_page_template() ) { $page_template = basename( get_page_template(), '.php' ); $css_file_path = get_template_directory() . "/css/pages/$page_template.css"; $js_file_path = get_template_directory() . "/js/pages/$page_template.js"; $css_file_uri = get_template_directory_uri() . "/css/pages/$page_template.css"; $js_file_uri = get_template_directory_uri() . "/js/pages/$page_template.js"; if(file_exists($css_file_path)){ wp_enqueue_style($page_template, $css_file_uri); } if(file_exists($js_file_path)){ wp_enqueue_script($page_template, $js_file_uri); } } } add_action('wp_enqueue_scripts', 'mytheme_bootstrap_page_resources'); 

Solutions Collecting From Web of "Динамически загружать стили и скрипты из темы Functions.php"

Здесь пара вопросов …

Во-первых, для того, чтобы WordPress знал, какой шаблон шаблона вы собираетесь использовать, слишком init процесс. (Таким is_page_template() функция is_page_template() всегда возвращает false).

Просто продолжайте и подключите свою функцию к wp_enqueue_scripts (что вы, вероятно, уже делаете для своего глобального CSS / JavaScript). Затем проверьте шаблон страницы и запустите свою логику внутри этой функции.

Во-вторых, get_template_directory_uri() вернет веб-URL вашего файла, и PHP- file_exists ожидают путь к каталогу на диске (а не URL-адрес). Используйте get_template_directory() чтобы получить этот путь, и введите его в get_template_directory_uri() .

Вот рабочий пример, включая правильный крючок в wp_enqueue_scripts но вы захотите переместить содержимое load_resources() в свою собственную функцию в своей теме, которая уже подключена.

 function load_resources() { if( is_page_template() ) { $page_template = basename( get_page_template(), '.php' ); $css_file_path = get_template_directory() . '/css/pages/' . $page_template . '.css'; $js_file_path = get_template_directory() . '/js/pages/' . $page_template . '.js'; $css_file_uri = get_template_directory_uri() . '/css/pages/' . $page_template . '.css'; $js_file_uri = get_template_directory_uri() . '/js/pages/' . $page_template . '.js'; if(file_exists($css_file_path)){ wp_enqueue_style($page_template, $css_file_uri); } if(file_exists($js_file_path)){ wp_enqueue_script($page_template, $js_file_uri); } } } add_action( 'wp_enqueue_scripts', 'load_resources' );