Поставить в очередь jQuery в WordPress


Создавая свою первую тему с нуля в Wordpress 3.4.1, я знаю, что в Wordpress уже есть последняя версия jQuery через Google. Я читал о проблеме, если скрипт вызывается неправильно, поэтому хочу попытаться сохранить все как можно ближе к рекомендуемому кодированию. Я хочу убедиться, что скрипт загружен, что, как я полагаю, выполняется приведенным ниже PHP-скриптом в functions.php файл (взят из Кодекса Wordpress).

<?php
function my_scripts_method() {
wp_enqueue_script( 'jquery' );
}

Я хочу в основном есть пользовательское меню с использованием jQuery, так что это просто случай размещения скрипта, который я хочу активировать, в заголовке или разделе PHP?

Также, если бы я хотел поставить в очередь другой скрипт, который еще не включен в Wordpress, могу ли я просто добавить приведенный ниже PHP к приведенному выше коду в functions.php файл?

wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');

Я в порядке с HTML и CSS, но PHP и JAVA для меня относительно новы, любая помощь будет очень признательна.

Спасибо,

Муравей

Author: Chris_O, 2012-07-29

2 answers

Вы на правильном пути, но не хватает одной детали:

add_action('wp_enqueue_scripts', 'my_scripts_method');

Add_action позволяет запускать код в определенное время во время загрузки страницы /определенных событий. Описанное выше действие указывает WP запускать вашу функцию при добавлении сценариев в элемент html head. Ваша функция, в свою очередь, инструктирует WP добавить скрипт jQuery.

То же самое касается регистрации нового скрипта, но с другим крючком:

add_action('wp_enqueue_scripts', 'my_register_script_method');

function my_register_script_method () {
    wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
}

Если вы переопределяете предварительно зарегистрированный скрипт, вам также следует сначала отмените регистрацию этого сценария. Я использую что-то вроде следующего кода для замены скрипта jquery (примечание: прочитайте 2-е редактирование в конце):

function my_register_script_method () {
    wp_deregister_script('jquery');
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
}

Относительно того, куда вы должны поместить этот код. Если код специфичен для темы, вы должны поместить его в functions.php в папке вашей темы. Если вы собираетесь повторно использовать код в нескольких темах, было бы проще поддерживать плагин со всем общим кодом.

Редактировать: Как отмечает Стивен Харрис ниже, начиная с WP 3.3 вы также можете использовать wp_enqueue_scripts после wp_head срабатывает, например, в шорткодах или виджетах. Затем js будет загружен в нижний колонтитул.

Правка 2: Для jQuery и других библиотек, размещенных в Google, рекомендуется использовать http://wordpress.org/extend/plugins/use-google-libraries / Прочитайте комментарии для мотивации Отто.

 3
Author: W van Dam, 2012-07-29 17:30:46

Вы должны использовать wp_enqueue_script для загрузки скрипта для вашей темы, функция wp_register_script регистрирует скрипт только с ключевым словом.

wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');

Это просто зарегистрирует новый скрипт с именем jqueryexample, и вы можете загрузить этот скрипт при необходимости, используя функцию wp_enqueue_script.

Вот пример кода для загрузки уже зарегистрированного скрипта, т.е. jQuery, и нового собственного скрипта, т.е. Примера jQuery

<?php
function wpse_60056_load_scripts() {
    wp_enqueue_script( 'jquery' );
    wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
    wp_enqueue_script( 'jqueryexample' );

}    
add_action('wp_enqueue_scripts', 'wpse_60056_load_scripts');
?>

Однако вы можете использовать только функцию wp_enqueue_scripts для загрузки удаленного JavaScript, вот пример -

wp_enqueue_script('jqueryexample','http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js'); 
 3
Author: amit, 2012-07-29 12:56:05