Js-скрипты для WordPress в очереди

#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 )