У меня проблема с порядком очередей при постановке в очередь таблиц стилей и сценариев для определенной страницы в моем function.php


Я работаю над преобразованием шаблона кода (html, css, js) в тему Wordpress. Эта тема WordPress не является дочерней темой. Для домашней страницы (front-page.php файл) очереди таблиц стилей и javascript работали, но на другой конкретной странице (room.php файл) для этого ему нужны собственные таблицы стилей и javascript, это не работает. Вот моя основная функция в моем functions.php файл, который ставит в очередь сценарии и таблицы стилей:

// Styles

    // room.php_Styles
wp_enqueue_style( 'animate', get_template_directory_uri() . '/css/animate.css', array(), '1.0');
wp_enqueue_style( 'composent', get_template_directory_uri() . '/css/component.css', array(), '1.0' );
wp_enqueue_style( 'defaut', get_template_directory_uri() . '/css/default.css', array(), '1.0');
    // front-page.php_Styles
wp_enqueue_style( 'all', get_template_directory_uri() . '/css/all.css', array(), '1.0' );       
wp_enqueue_style( 'normal', get_template_directory_uri() . '/css/normalize.css', array(), '1.0' );
wp_enqueue_style( 'shortcuticon', get_template_directory_uri() . '/favicon.ico', array(), '1.0');   
wp_enqueue_style( 'demonstration', get_template_directory_uri() . '/css/demo.css', array(), '1.0');


// Scripts
    // front-page.php_Scripts
wp_enqueue_script( 'anime', get_template_directory_uri() . '/js/anime.min.js', array(), '1.0', true );
wp_enqueue_script( 'imagesload', get_template_directory_uri() . '/js/imagesloaded.pkgd.min.js', array(),'1.0', true );
wp_enqueue_script( 'main', get_template_directory_uri() . '/js/main.js', array(), '1.0', true );
wp_enqueue_script( 'popper', 'https://cdn.jsdelivr.net/npm/[email protected]/dist/js/shepherd.js', array(), '1.0', true );
    // room-page.php_Scripts
wp_enqueue_script( 'wall', get_template_directory_uri() . '/js/wallgallery.js', array(), '1.0', true );
wp_enqueue_script( 'custom', get_template_directory_uri() . '/js/modernizr.custom.js', array(),'1.0', true );
wp_enqueue_script( 'ajax', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', array(), '1.0', true );

Добавить действие( "wp_enqueue_scripts", "enqueue_theme_assets");

Моя конкретная страница здесь room.php и сравнивая локальное выполнение html-шаблона с темой wordpress, я пришел к выводу, что существуют только определенные таблицы стилей, которые запускаются в room.php а другие - нет. Возможно, это проблема в ПОРЯДКЕ или ЗАВИСИМОСТЯХ функций wp_enqueue_script()/wp_enqueue_style().

Author: Driss Elk, 2020-05-09

1 answers

Дрисс,

Я склонен разбивать css и javascript, специфичные для шаблона, на файлы специально для этого шаблона - таким образом, если он не нужен на каждой странице, я не загружаю его и, таким образом, это позволяет мне сохранять мои main.js и style.css меньше. Вот как я обычно это делаю:

if( is_page_template( 'room.php' ) ) {
    //Styles
    wp_enqueue_style( 'room-animate', get_stylesheet_directory_uri() . '/css/animate.css', array(), '1.0');
    wp_enqueue_style( 'room-composent', get_stylesheet_directory_uri() . '/css/component.css', array(), '1.0' );
    wp_enqueue_style( 'room-defaut', get_stylesheet_directory_uri() . '/css/default.css', array(), '1.0');
    //Scripts
    wp_enqueue_script( 'room-wall', get_stylesheet_directory_uri() . '/js/wallgallery.js', array( 'jquery' ), '1.0', true );
    wp_enqueue_script( 'room-custom', get_stylesheet_directory_uri()() . '/js/modernizr.custom.js', array( 'jquery' ),'1.0', true );
    //You don't need to call jQuery again, WP does that for you.
    //wp_enqueue_script( 'ajax', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', array(), '1.0', true );
}

Важное примечание: если вашего шаблона нет в главном каталоге темы, убедитесь, что ваше условие включает каталог, в котором он находится. Например, если у вас есть шаблон room.php в подкаталог, который вы бы использовали вместо этого:

if( is_page_template( 'templates/room.php' ) ) { 

Попробуйте этот метод и после этого проверьте верхний и нижний колонтитулы с помощью инструментов разработчика, чтобы убедиться, что стили и сценарии загружаются. Я прокомментировал jQuery, потому что WP уже загружает jQuery, и загрузка его дважды вызовет проблемы. Вы можете удалить jQuery WP из очереди и поставить в очередь свою более старую версию, но это потенциально может привести к тому, что ряд других функций WP перестанет работать.

Если стили и сценарии загружаются, а вы все еще при возникновении проблем эти проблемы могут быть связаны с самим javascript.

Кроме того, для этого конкретного случая использования, о котором вы спрашиваете, get_template_directory_uri() и get_stylesheet_directory_uri должны быть взаимозаменяемыми.

 0
Author: Tony Djukic, 2020-05-09 04:31:59