Сценарий постановки в очередь в functions.php против на странице


Имеет ли значение, если я ставлю в очередь скрипт только на той странице, на которой он мне нужен для использования? В отличие от functions.php?

Или, какова наилучшая практика? В этом примере мне нужен ротатор только на первой странице моего сайта.

И если я поставлю его в очередь на странице, есть ли лучшее место для его размещения?

Author: Dave Romsey, 2011-10-07

2 answers

Продолжайте functions.php .

Используйте действие wp_enqueue_scripts для вызова этой функции или admin_enqueue_scripts для вызова ее на стороне администратора. Вызов его вне действия может привести к проблемам. Подробности см. в № 11526.

Источник: http://codex.wordpress.org/Function_Reference/wp_enqueue_script

function themename_load_js() {

    if ( is_admin() ) {
        return;
    }

    if is_page( 123) { // Replace 123 with your page's ID.
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'rotator-js', get_template_directory_uri() . '/js/rotator.js', array ( 'jquery' ) );
        wp_enqueue_script( 'rotator-init-js', get_template_directory_uri() . '/js/rotator-init.js', array ( 'jquery', 'rotator-js' ) );
    }
} 
add_action( 'wp_print_scripts', 'themename_load_js' );

Редактировать: Бонусный совет: Всякий раз, когда мне нужно сделать что-то подобное, вместо жесткого кодирования идентификатора страницы в функции, я создаю параметры страницу и добавьте вызов wp_dropdown_pages(), который позволяет пользователю выбрать специальную страницу. Вы сказали, что используете первую страницу, поэтому, вероятно, вы могли бы использовать is_front_page() в своей функции, а не проверять идентификатор страницы, что еще чище.

 3
Author: Dave Romsey, 2011-10-07 20:17:01

Это абсолютно работает для меня прямо сейчас:

add_action('get_header', function() {
    if(is_page('566')) {

        function sp_enqueue_script() {
            wp_enqueue_script(
                'sp-custom-script',
                get_stylesheet_directory_uri() . '/assets/js/sp_script.js',
                array( 'jquery' ), '1.0', true
            );
        }

        add_action( 'wp_enqueue_scripts', 'sp_enqueue_script' );
    }
});

Is_страничный не работает в functions.php поскольку основной запрос еще не загружен, подождите, пока загрузится заголовок.

Последнее логическое значение в крючке wp_enqueue_script означает, что сценарий должен быть помещен в очередь в нижнем колонтитуле, чтобы он работал быстрее.

 1
Author: Steph, 2019-08-07 22:09:39