it-swarm.com.ru

Как "отцепить"/отменить регистрацию jQuery, чтобы он не вызывался как часть wp_footer () ;?

Мне нужно "отцепить" jQuery от моего wp_footer() ... он вызывается автоматически, и я ищу что-то, что я могу добавить в functions.php, чтобы предотвратить его повторный вызов в нижнем колонтитуле (так как мне нужно вызвать его в шапке)

пожалуйста, без комментариев редакции о том, почему звонить в нижний колонтитул лучше

2
Brian

Вы не хотитеотменить регистрациюскрипт; это сделало бынедоступнымдля постановки в очередь. Скорее, вы хотитеdequeueсценарий.

У вас есть два варианта:

  1. Если вы знаете функцию обратного вызова, через которую вызывается wp_enqueue_script( 'jquery' ), вы можете просто вызвать remove_action( 'wp_footer', 'callback_function_name' )
  2. Скорее всего, вы не будете знать функцию обратного вызова (или jQuery будет поставлен в очередь в качестве зависимости другим сценарием), и в этом случае вы можете удалить его из очереди напрямую, что вы сделали бы через wp_dequeue_script() .

например.

function theme_slug_dequeue_footer_jquery() {
     wp_dequeue_script( 'jquery' );
}
add_action( 'wp_footer', 'theme_slug_dequeue_footer_jquery', 11 );

Примечание:priority, вероятно, довольно важно, так как вам нужно убедиться, что вашdequeueвызов срабатываетпослепоставить в очередьпозвонить.

Правка

Я настраиваю эту тему из стандартной темы TwentyEleven. Кажется, что сама тема перехватывает WordPress, а не плагин. Я посмотрел в файле functions.php по умолчанию и не вижу там никакого wp_enqueue_script (). Есть ли где-то еще, я должен посмотреть?

Случайно ли вы просматриваете шаблон витрины (т.е. showcase.php )? Обратите внимание, что он ставит в очередь пользовательский скрипт:

wp_enqueue_script( 'twentyeleven-showcase', get_template_directory_uri() . '/js/showcase.js', array( 'jquery' ), '2011-04-28' );

Он добавляет jQuery в свой массив зависимых, то есть WordPress сначала ставит в очередь jQuery, азатемставит twentyeleven-showcase. Таким образом, это может быть источником загадки jQuery.

(Существует также вызов wp_enqueue_script() в /inc/theme-options.php, но я не думаю, что он повлияет на постановку сценария на внешний интерфейс.)

6
Chip Bennett

функция отмены регистрации любого скрипта:

wp_deregister_script('jquery');

Но проблема у вас в другом, если я правильно понимаю - у вас jQury включен ДВАЖДЫ, один раз в заголовке и один раз в нижнем колонтитуле. Это какой-то плагин или функция темы, которая выполняется неправильно - с просьбой напечатать ее в нижнем колонтитуле. Возможно, вы захотите лучше определить проблему, поскольку она может вызвать другие проблемы ...

Как бы то ни было, примеры хуков: (один init, один print_scripts)

function dl_register_common_js() {
wp_deregister_script('jquery');
}
//add_action('init', 'dl_register_common_js'); // will deregister from head
add_action('wp_print_scripts', 'dl_register_common_js');
1
krembo99