Використовуйте wp_enqueue_script()
у своїй темі
Основна відповідь - використання wp_enqueue_script()
в wp_enqueue_scripts
гачку для переднього кінця admin_enqueue_scripts
для адміністратора. Це може виглядати приблизно так (що передбачає, що ви телефонуєте з functions.php
файлу теми ; зверніть увагу, як я посилаюсь на каталог таблиць стилів):
<?php
add_action( 'wp_enqueue_scripts', 'mysite_enqueue' );
function mysite_enqueue() {
$ss_url = get_stylesheet_directory_uri();
wp_enqueue_script( 'mysite-scripts', "{$ss_url}/js/mysite-scripts.js" );
}
Це основи.
Попередньо визначені та кілька залежних сценаріїв
Але скажімо, ви хочете включити і jQuery, і jQuery UI Sortable зі списку сценаріїв за замовчуванням, включених до WordPress, і ви хочете, щоб ваш сценарій залежав від них? Легко, просто включіть перші два сценарії, використовуючи заздалегідь визначені ручки, визначені в WordPress, і для вашого сценарію надайте 3-й параметр, до wp_enqueue_script()
якого є масив ручок сценарію, використовуваних кожним сценарієм, наприклад:
<?php
add_action( 'wp_enqueue_scripts', 'mysite_enqueue' );
function mysite_enqueue() {
$ss_url = get_stylesheet_directory_uri();
wp_enqueue_script( 'mysite-scripts', "{$ss_url}/js/mysite-scripts.js", array( 'jquery', 'jquery-ui-sortable' ) );
}
Сценарії в плагіні
Що робити, якщо ви хочете зробити це в плагіні замість цього? Використовуйте plugins_url()
функцію, щоб вказати URL-адресу файлу Javascript:
<?php
define( 'MY_PLUGIN_VERSION', '2.0.1' );
add_action( 'wp_enqueue_scripts', 'my_plugin_enqueue' );
function my_plugin_enqueue() {
wp_enqueue_script( 'my-script', plugins_url('/js/my-script.js',__FILE__), array('jquery','jquery-ui-sortable'), MY_PLUGIN_VERSION );
}
Версія ваших сценаріїв
Також зверніть увагу, що вище ми дали своєму плагіну номер версії та передали його як 4-й параметр wp_enqueue_script()
. Номер версії виводиться в джерело як аргумент запиту в URL-адресі до скрипту і служить для примушення браузера повторно завантажувати, можливо, кешований файл, якщо версія була змінена.
Завантажуйте сценарії лише на потрібних сторінках
Перше правило Web Performance говорить Мінімізація HTTP запитів так що по можливості слід обмежити сценарії для завантаження тільки там , де це необхідно. Наприклад, якщо вам потрібен лише ваш скрипт у адміністратора, обмежте його на сторінках адміністратора, використовуючи admin_enqueue_scripts
замість цього гачок:
<?php
define( 'MY_PLUGIN_VERSION', '2.0.1' );
add_action( 'admin_enqueue_scripts', 'my_plugin_admin_enqueue' );
function my_plugin_admin_enqueue() {
wp_enqueue_script( 'my-script', plugins_url( '/js/my-script.js', __FILE__ ), array( 'jquery', 'jquery-ui-sortable' ), MY_PLUGIN_VERSION );
}
Завантажте свої сценарії в колонтитулі
Якщо ваші сценарії є одними з тих, які потрібно завантажити у колонтитул, є 5-й параметр, wp_enqueue_script()
який сповіщає WordPress затримати його та розмістити його у нижньому колонтитулі (якщо припустимо, що ваша тема не керувалась і що вона справді викликає гачок wp_footer, як усі хороші теми WordPress повинні ):
<?php
define( 'MY_PLUGIN_VERSION', '2.0.1' );
add_action( 'admin_enqueue_scripts', 'my_plugin_admin_enqueue' );
function my_plugin_admin_enqueue() {
wp_enqueue_script( 'my-script', plugins_url( '/js/my-script.js', __FILE__ ), array( 'jquery', 'jquery-ui-sortable' ), MY_PLUGIN_VERSION, true );
}
Більш дрібний контроль
Якщо вам потрібен більш тонкий контроль, ніж цей Ozh , є чудова стаття під назвою " Як: завантажуйте Javascript за допомогою свого плагіну WordPress" .
Відключення сценаріїв до посилення контролю
У Джастіна Тадлока є чудова стаття під назвою Як відключити сценарії та стилі, якщо ви хочете:
- Об'єднайте кілька файлів в один файл (пробіг може змінюватися тут у JavaScript).
- Завантажуйте файли лише на тих сторінках, де ми використовуємо сценарій чи стиль.
- Перестаньте користуватися! Важливим у нашому файлі style.css, щоб зробити прості настройки CSS.
Передача значень від PHP до JS с wp_localize_script()
У своєму блозі Володимир Преловаць має чудову статтю під назвою " Найкраща практика для додавання коду JavaScript до плагінів WordPress", де він обговорює використання, wp_localize_script()
щоб дозволити вам встановити значення змінних у вашому PHP на стороні сервера, які згодом будуть використовуватися у вашому Javascript на стороні клієнта.
Дійсно тонкозернистий контроль з wp_print_scripts()
І нарешті, якщо вам потрібен дійсно тонкий контроль, ви можете розглянути, wp_print_scripts()
як це обговорювалося на Beer Planet, у публікації під назвою Як включати CSS та JavaScript умовно та лише тоді, коли це потрібно повідомленнями .
Епілок
Ось про це найкращі практики включаючи файли Javascript з WordPress. Якщо я щось пропустив (що, мабуть, маю), обов'язково повідомте мене в коментарях, щоб я міг додати оновлення для майбутніх мандрівників.