Intereting Posts

Регистрация google jquery будет перезаписана плагином

В настоящее время я использую плагин, который включает jQuery 1.6.4:

function thethe_image_slider_head_scripts(){ wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/ jquery.min.js', false, 'latest'); wp_enqueue_script( 'jquery' ); wp_enqueue_script('slider-ui', THETHE_IMAGE_SLIDER_URL.'style/js/thethe-image-slider.js', array('jquery')); } 

Проблема в том, что я дешифрую jquery в файле functions.php в моей теме, чтобы получить версию 1.7.2. Но он по-прежнему занимает версию 1.6.4 ..

Я действительно люблю:

  wp_deregister_script( 'jquery' ); wp_register_script('jquery', (get_template_directory_uri() . "/js/jquery-1.7.2.min.js"), false, '1.7.2'); wp_enqueue_script( 'jquery' ); 

Кто-нибудь знает, почему он берет 1.6.4, а не версию 1.7.2?

Благодаря!

Solutions Collecting From Web of "Регистрация google jquery будет перезаписана плагином"

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

В настоящее время WordPress (в момент написания) поставляется вместе с jQuery 1.7.1. Когда WordPress 3.4 появится в следующем месяце, эта версия будет (IIRC) 1.8.x. Core, Themes и другие плагины будут по праву ожидать, что версия jQuery, входящая в комплект ядра, будет использоваться. Кроме того , встроенная в jQuery версия jQuery использует режим без конфликтов , что может быть неверным при регистрации произвольной версии скрипта. Таким образом, вы вводите больше потенциальных поломки сценария.

Во-вторых: чтобы переопределить сценарий de-register / enqueue в плагине, вам нужно подключиться к такому же действию и использовать приоритет hook.

Предполагая, что обратный вызов плагина unction thethe_image_slider_head_scripts() {} использует приоритет по умолчанию 10 , тогда ваш собственный обратный вызов должен использовать более низкий приоритет (то есть большее число ), например 11 , например:

 <?php function wpse48638_enqueue_scripts() { // Theme script enqueues go here } add_action( 'wp_enqueue_scripts', 'wpse48638_enqueue_scripts', 11 ); ?> 

Кроме того, вы можете удалить обратный вызов плагина из действия , а затем установить собственные сценарии в соответствии с нормальным. Примечание: remove_action() должен использовать тот же приоритет, что и вызов плагина add_action() :

 <?php remove_action( 'wp_enqueue_scripts', 'thethe_image_slider_head_scripts' ); ?> 

(Обратите внимание, что в обоих случаях вам нужно ссылаться на то же действие, которое использует плагин. Это может быть wp_head или даже init , а не wp_enqueue_scripts .)

редактировать

Основываясь на этом комментарии:

Позвольте мне видеть, когда я ищу функцию: thethe_image_slider_head_scripts add_action('wp_print_scripts', "thethe_image_slider_head_scripts");

Это именно то, что нам нужно!

Если вы просто хотите удалить скрипт сценария плагина, просто позвоните:

 <?php remove_action( 'wp_print_scripts', 'thethe_image_slider_head_scripts' ); ?> 

Вы должны использовать тот же приоритет, что и вызов add_action() , поэтому не забудьте оставить его как значение по умолчанию ( 10 ).

Изменить 2

Итак, есть еще одна вещь, которую вам может понадобиться сделать, основываясь на этом маленьком самородке мудрости из Кодекса:

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

Примечание. Мне пришлось загрузить плагин, для которого требуется бесплатное членство в клубе от разработчика, чтобы найти это решение. Увидеть полный код обязательно, чтобы ответить на эти вопросы.

Функция add_action( 'wp_print_scripts', 'thethe_image_slider_head_scripts' ) вызывается из другого обратного вызова , который сам подключается к init . Вот почему ваш remove_action() терпит неудачу: поскольку он срабатывает при более раннем действии, когда действие, которое вы пытаетесь удалить , еще не добавлено . Таким образом, вам нужно обернуть remove_action() внутри обратного вызова, также подключенный к init , например:

 <?php function wpse48638_init_functions() { // Remove TheThe Image Slider scripts remove_action( 'wp_print_scripts', 'thethe_image_slider_head_scripts' ); } add_action( 'init', 'wpse48638_init_functions' ); ?> 

Обратите также внимание на то, что вам, вероятно, также потребуется повторно поставить сценарий 'slider-ui' который является частью обратного вызова, который вы удаляете.