Google jQuery WordPress - как правильно подключить | Wiki | PWODEV
, 02.08.2018 12:59

Google jQuery WordPress — как правильно подключить


Скрипт как правильно подключить из CDN Google библиотеку jQuery WordPress:

add_action('wp_enqueue_scripts', 'front_scripts');
function front_scripts(){
	// add jQuery to footer and from Google
	global $google_jQuery;
	if(!$google_jQuery) {
		$google_jQuery = 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js';

		wp_deregister_script('jquery-core');
		wp_register_script('jquery-core', $google_jQuery, false, null, true);

 		wp_deregister_script('jquery');
		wp_register_script('jquery', false, array('jquery-core'), null, true);
	}

	// add ajaxurl
	global $ajaxurl;
	if(!$ajaxurl){
		$ajaxurl = admin_url('admin-ajax.php');
		wp_localize_script( 'jquery', 'ajaxurl', admin_url('admin-ajax.php'));
	}
}

Последняя версия jQuery от Google

В этом скрипте я также добавил сразу подключение ajaxurl.

Этот скрипт для фронтенда, если нужен для админки — добавляем:

add_action('admin_enqueue_scripts', 'admin_scripts');

А теперь немного пред истории:

В вордпресе есть локальная версия jQuery, также и все остальные сопутствующие скрипты, дело это хорошее, но все-же лучше всего подключать библиотеку jQuery WordPress лежащую в гугле. Перенаправить или заменить стандартный скрипт джейквери (jQuery), лежащий в ядре вп или Вордпресс, не достаточно, потому что там немного сложный механизм. Есть 2 названия одного и того-же подключения стандартного скрипта jQuery в вродпресе: jquery и jquery-core. Дело в том что при вызове первого скрипта происходит ссылка на второй. В ядре мы можем найти следующий код который немного это объяснит:

if ( $handle === 'jquery' )
    $handle = 'jquery-core';

Немного странно… Вообщем чтобы в wp jQuery подключить из гугла правильно, приходится немного попотеть. Получается если нужно дописать какой-то скрипт, типа как ajax url используя функцию:

wp_localize_script( 'jquery', 'ajaxurl', admin_url('admin-ajax.php'));

В первом параметре этой функции мы говорим что скрипт должен запуститься сразу перед подключением скрипта ‘jquery’, но так как мы видели из кода выше скрипт всеравно будет искать ‘jquery-core’. Это означает что он будет подключаться не там где надо или если мы переписали или отменили ‘jquery-core’ то он вообще не подключится.

Подключить jQuery WordPress из CDN Google

Подключить jQuery WordPress из CDN Google

Чтобы решить эту проблему я методом долгих проб и ошибок нашел лучшее решение этой проблемы.

Итак задача:

Подключить jQuery WordPress из CDN Google, но чтобы при этом работали оба варианта подключения jquery и jquery-core. И также чтобы работало подключение других остальных скриптов.

Решение:
  1. Сначала обнуляем jquery и jquery-core
    wp_deregister_script('jquery-core');
    wp_deregister_script('jquery');
  2. Затем регистрируем ‘jquery-core’ скрипт
    wp_register_script('jquery-core', 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js', false, null, true);
  3. Регистрируем ‘jquery’ скрипт как ссылку на первый
    wp_register_script('jquery', false, array('jquery-core'), null, true);

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

Если кто знает лучшее решение, напишите его в комментариях.

Возможно кому интересно — на днях обновил статью на тему: как установить WordPress с помощью терминала на маке.


Добавить комментарий