#php #javascript #wordpress
#php #javascript #wordpress
Вопрос:
У меня возникли проблемы с запуском функций wp_enqueue для работы. Я просмотрел всю документацию по нему, но у меня возникли проблемы с просеиванием и выяснением, что и куда должно идти.
пока я понимаю, что я должен регистрировать и ставить в очередь файлы из functions.php файл темы, которую я создаю. Так что это именно то, что я делаю. Я создаю несколько тегов PHP и помещаю их в середину, внизу страницы. Сохраняйте и загружайте.
Когда я перезагружаюсь, он просто возвращает пустой белый экран, должно быть, ошибка в коде или что-то в этом роде.
Вот функция:
<?php
function add_scripts(){
wp_register_script('jquery', 'http://code.jquery.com/jquery-1.5.2.min.js');
wp_register_script('nivo', get_bloginfo('url').'/scripts/nivo.js');
wp_register_script('slimbox',get_bloginfo('url').'/scripts/slimbox2.js');
wp_register_script('picasa', get_bloginfo('url').'/scripts/jquery.EmbedPicasaGallery.js');
wp_register_script('pwi',get_bloginfo('url').'/jquery.pwi-min.js');
wp_register_script('swf', get_bloginfo('url').'/jquery.swfobject.1-1-1.min.js');
wp_register_script('simpletube',get_bloginfo('url').'/scripts/jquery.simpletube.js');
wp_register_script('jqvalidate', get_bloginfo('url').'/jquery.jqvalidate.js');
wp_enqueue_script('jquery');
wp_enqueue_script('nivo');
wp_enqueue_script('slimbox');
wp_enqueue_script('picasa');
wp_enqueue_script('pwi')
wp_enqueue_script('swf');
wp_enqueue_script('simpletube')
wp_enqueue_script('jqvalidate');
}
add_action('init','add_scripts');
?>
Итак, есть ли какая-то проблема с моим синтаксисом? Я не настолько силен в PHP.
Любая помощь приветствуется. Спасибо!
Комментарии:
1. У вас их два
wp_enqueue_script('picasa');
, не хватаетwp_enqueue_script('nivo');
.2. Спасибо, я не думаю, что проблема в этом. Я исправил это и все тот же результат
3. Смотрите мой ответ ниже. В вашем коде отсутствуют некоторые точки с запятой (
;
).
Ответ №1:
Довольно сложно отлаживать его, не видя весь файл, но тот факт, что вы получаете «пустую страницу», предполагает, что где-то определенно есть что-то большее, чем проблема с синтаксисом.
У вас точно есть правильно вложенные теги php? т.е.
<?php
some code
<?php
some more code
?>
some more code
?>
вызовет у вас проблемы.
Кроме того, теперь стало обычной практикой оставлять последнее ?>
в конце файла (это означает, что у вас не возникнет проблем с наличием пробелов после закрывающих тегов, и они не нужны)
Кроме того, вы использовали wp_register_script('jquery'...)
— В WordPress уже зарегистрирован jquery. Если вы хотите повторно зарегистрировать его, вам нужно wp_deregister_script('jquery')
сначала. Я бы также делал это только вне администратора, поэтому:
if(!is_admin()){wp_deregister_script('jquery'); <your wp_register_script stuff> }
Если эти вещи не помогают, скопируйте и вставьте весь ваш functions.php
файл (используйте pastebin.com и дайте нам ссылку)
Кроме того, вы используете get_bloginfo('url')
несколько раз, что означает, что вы выполняете множество ненужных вызовов к базе данных. Вставьте это в переменную и сэкономьте немного накладных расходов:
$my_url = get_bloginfo('wpurl');
wp_register_script('thing', $my_url.'/script/location/file.js');
О! Еще одна вещь, я не думаю, что url
это допустимый аргумент для get_bloginfo()
, я думаю, вы хотите wpurl
Страница кодекса в функции get_bloginfo()
Удачи!
Ответ №2:
Отсутствуют ;
следующие две строки:
wp_enqueue_script('pwi')
wp_enqueue_script('simpletube')
Ответ №3:
Вместо вашего кода я бы использовал:
<?php
function add_scripts(){
wp_enqueue_script('jquery', 'http://code.jquery.com/jquery-1.5.2.min.js');
wp_enqueue_script('nivo', get_bloginfo('url').'/scripts/nivo.js');
wp_enqueue_script('slimbox',get_bloginfo('url').'/scripts/slimbox2.js');
wp_enqueue_script('picasa', get_bloginfo('url').'/scripts/jquery.EmbedPicasaGallery.js');
wp_enqueue_script('pwi',get_bloginfo('url').'/jquery.pwi-min.js');
wp_enqueue_script('swf', get_bloginfo('url').'/jquery.swfobject.1-1-1.min.js');
wp_enqueue_script('simpletube',get_bloginfo('url').'/scripts/jquery.simpletube.js');
wp_enqueue_script('jqvalidate', get_bloginfo('url').'/jquery.jqvalidate.js');
}
add_action('wp_enqueue_scripts', 'add_scripts');
Поэтому, пожалуйста, обратите внимание, что я удалил «wp_register_script», поскольку в его использовании нет необходимости, если вы собираетесь вызывать wp_enqueue сразу после регистрации.
wp_register_script
Используется для того, чтобы впоследствии вы могли вызывать его в любом другом месте кода, не включая путь.
Также большое изменение заключается в том, что я не вызываю функцию из
init
Но я вызываю это из
wp_enqueue_scripts
Также, пожалуйста, рассмотрите возможность добавления дополнительных параметров в ваш wp_enqueue_script, таких как
wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )