Добавление JS и CSS на WordPress
Добавление обработки действия на подгрузку скриптов для сайта:
add_action('wp_enqueue_scripts', function() {
// ...
}, 900);
Добавление обработки действия на подгрузку скриптов для админки:
add_action('admin_enqueue_scripts', function() {
// ...
}, 900);
Подключение JavaScript файл на страницу
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); подробно
$handle — название скрипта (рабочее название). Строка в нижнем регистре
$src — URL файла скрипта
$deps — массив зависимых скриптов
$ver — версия, которая будет указана в URL
$in_footer — подключать скрипт в подвале (по умолчанию: false)
Пример загрузки штатного скрипта scriptaculous
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('scriptaculous');
}, 900);
Пример подключаемого скрипта, зависящего от jQuery
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('custom-script', plugins_url('/js/newscript.js', __FILE__), ['jquery'], '1.0');
}, 900);
Пример подгрузки скрипта только для детальной записи
add_action('wp', function() {
if (is_single()) {
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('newscript', plugins_url('/js/newscript.js', __FILE__), ['scriptaculous'], '1.0');
});
}
});
Пример загрузки скрипта из темы
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('custom-script', get_template_directory_uri() . '/js/custom_script.js', ['jquery'], '1.0');
}, 900);
Пример загрузки скрипта только для страниц плагина
add_action('admin_menu', 'my_plugin_admin_menu');
function my_plugin_admin_menu() {
// Регистрируем страницу плагина
$page = add_submenu_page(
'edit.php', // Родительская страница меню
__( 'Мой плагин', 'myPlugin' ), // Название пункта меню
__( 'Мой плагин', 'myPlugin' ), // Заголовок страницы
'manage_options', // Возможность, определяющая уровень доступа к пункту
'my_plugin-options', // Ярлык (часть адреса) страницы плагина
'my_plugin_manage_menu' // Функция, которая выводит страницу
);
// Используем зарегистрированную страницу для загрузки скрипта
add_action( 'load-' . $page, 'my_plugin_admin_scripts' );
}
## Эта функция будет вызвана только на странице плагина, подключаем скрипт
function my_plugin_admin_scripts() {
wp_enqueue_script( 'my-plugin-script', plugins_url('/script.js', __FILE__) );
}
function my_plugin_manage_menu() {
// Выводим страницу плагина
}
Добавление файла CSS стилей
wp_enqueue_style( $handle, $src, $deps, $ver, $media ); подробно
$handle — название файла стилей (рабочее название). Строка в нижнем регистре
$src — URL файла стилей
$deps — массив зависимых стилей
$ver — версия, которая будет указана в URL
$media — Устанавливается значение атрибута media. media указывает тип устройства для которого будет работать текущий стиль. Может быть: all, screen, handheld, print или all (max-width:480px). По умолчанию: ‘all’. подробнее
Пример подключения файла стилей style.css текущей темы
add_action('wp_print_styles', function() {
wp_enqueue_style('theme-style', get_stylesheet_uri());
});
Загрузка стилей на странице настроек плагина
add_action( 'admin_menu', 'my_plugin_admin_menu' );
function my_plugin_admin_menu() {
// регистрируем страницу плагина
$page = add_submenu_page(
'edit.php',
__( 'My Plugin', 'myPlugin' ),
__( 'My Plugin', 'myPlugin' ),
'administrator',
__FILE__,
'my_plugin_manage_menu'
);
// используя идентификатор страницы плагина подключаемся к нужному событию
add_action('load-'. $page, 'my_plugin_admin_styles');
}
// Эта функция будет вызвана только на странице настроек плагина,
function my_plugin_admin_styles() {
wp_enqueue_style( 'myPluginStylesheet', plugins_url('stylesheet.css', __FILE__) );
}
// Страница настроек
function my_plugin_manage_menu() {
// код страницы настроек
}
Добавление дополнительного javascript кода к зарегистрированному скрипту
wp_add_inline_script( $handle, $data, $position ); подробно
$handle — название (ID) скрипта к которому будут добавлен дополнительный блок скрипта
$data — JS код в виде строки. Открывающий/закрывающий <script> добавляется автоматически
$position — куда добавить код: до (before) или после (after) указанного в $handle скрипта. По умолчанию: ‘after’
Пример
add_action('wp_enqueue_scripts', function(){
wp_enqueue_script('my_scripts', get_stylesheet_directory_uri() .'/my_scripts.js' );
// добавим произвольный код
wp_add_inline_script('my_scripts', 'alert("Привет!");');
});
/* Получим в HTML коде
<script type='text/javascript' src='http://example.com/wp-content/themes/mytheme/my_scripts.js'></script>
<script type='text/javascript'>
alert("Привет!");
</script>
*/
Пример произвольного кода JS перед файлом
add_action( 'wp_enqueue_scripts', function(){
wp_enqueue_script( 'my_scripts', get_stylesheet_directory_uri() .'/my_scripts.js' );
// добавим произвольный код
wp_add_inline_script( 'my_scripts', 'var color1 = "red"; var color2 = "blue";', 'before' );
});
/* Получим в HTML коде
<script type='text/javascript'>
var color1 = "red"; var color2 = "blue";
</script>
<script type='text/javascript' src='http://example.com/wp-content/themes/mytheme/my_scripts.js'></script>
*/
Пример нескольких вызовов wp_add_inline_script() для одного скрипта
add_action('wp_enqueue_scripts', function(){
wp_enqueue_script('my_scripts', get_stylesheet_directory_uri() .'/my_scripts.js' );
// добавим произвольный код
wp_add_inline_script('my_scripts', 'var color1 = "red"; var color2 = "blue";' );
wp_add_inline_script('my_scripts', 'var color3 = "#fff"; var color3 = "#000";' );
});
/* Получим в HTML коде
<script type='text/javascript' src='http://example.com/wp-content/themes/mytheme/my_scripts.js'></script>
<script type='text/javascript'>
var color1 = "red"; var color2 = "blue";
var color3 = "#fff"; var color3 = "#000";
</script>
*/
Регистрация файлов скрипта для последующего подключения
wp_register_script( $handle, $src, $deps, $ver, $in_footer ); подробно
$handle — название скрипта (рабочее название). Строка в нижнем регистре
$src — URL файла скрипта
$deps — массив зависимых скриптов
$ver — версия, которая будет указана в URL
$in_footer — подключать скрипт в подвале (по умолчанию: false)
Пример замены зарегистрированного скрипта jQuery на другой адрес
add_action('wp_enqueue_scripts', function() {
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js');
wp_enqueue_script('jquery');
}, 11);
Скрипты, которые идут в комплекте с WP 5.2.2
| Название | ID | Зависимость |
|---|---|---|
| utils | ||
| WP Common | common | jquery, hoverIntent, utils |
| wp-a11y | jquery | |
| Simple AJAX Code-Kit | sack | |
| QuickTags | quicktags | |
| ColorPicker (deprecated) | colorpicker | prototype |
| editor | utils, jquery | |
| clipboard | ||
| wp-fullscreen-stub | ||
| WordPress AJAX Response | wp-ajax-response | jquery |
| wp-api-request | jquery | |
| wp-pointer | jquery-ui-widget, jquery-ui-position | |
| Autosave | autosave | heartbeat |
| Heartbeat | heartbeat | jquery, wp-hooks |
| wp-auth-check | heartbeat | |
| List Manipulation | wp-lists | wp-ajax-response, jquery-color |
| prototype | ||
| scriptaculous-root | prototype | |
| scriptaculous-builder | scriptaculous-root | |
| scriptaculous-dragdrop | scriptaculous-builder, scriptaculous-effects | |
| scriptaculous-effects | scriptaculous-root | |
| scriptaculous-slider | scriptaculous-effects | |
| scriptaculous-sound | scriptaculous-root | |
| scriptaculous-controls | scriptaculous-root | |
| scriptaculous | scriptaculous-dragdrop, scriptaculous-slider, scriptaculous-controls | |
| cropper | scriptaculous-dragdrop | |
| jQuery | jquery | jquery-core, jquery-migrate |
| jquery-core | ||
| jquery-migrate | ||
| jQuery UI Core | jquery-ui-core | jquery |
| jQuery UI Effects | jquery-effects-core | jquery |
| jQuery UI Effects — Blind | jquery-effects-blind | jquery-effects-core |
| jQuery UI Effects — Bounce | jquery-effects-bounce | jquery-effects-core |
| jQuery UI Effects — Clip | jquery-effects-clip | jquery-effects-core |
| jQuery UI Effects — Drop | jquery-effects-drop | jquery-effects-core |
| jQuery UI Effects — Explode | jquery-effects-explode | jquery-effects-core |
| jQuery UI Effects — Fade | jquery-effects-fade | jquery-effects-core |
| jQuery UI Effects — Fold | jquery-effects-fold | jquery-effects-core |
| jQuery UI Effects — Highlight | jquery-effects-highlight | jquery-effects-core |
| jquery-effects-puff | jquery-effects-core, jquery-effects-scale | |
| jQuery UI Effects — Pulsate | jquery-effects-pulsate | jquery-effects-core |
| jQuery UI Effects — Scale | jquery-effects-scale | jquery-effects-core, jquery-effects-size |
| jQuery UI Effects — Shake | jquery-effects-shake | jquery-effects-core |
| jquery-effects-size | jquery-effects-core | |
| jQuery UI Effects — Slide | jquery-effects-slide | jquery-effects-core |
| jQuery UI Effects — Transfer | jquery-effects-transfer | jquery-effects-core |
| jQuery UI Accordion | jquery-ui-accordion | jquery-ui-core, jquery-ui-widget |
| jQuery UI Autocomplete | jquery-ui-autocomplete | jquery-ui-menu, wp-a11y |
| jQuery UI Button | jquery-ui-button | jquery-ui-core, jquery-ui-widget |
| jQuery UI Datepicker | jquery-ui-datepicker | jquery-ui-core |
| jQuery UI Dialog | jquery-ui-dialog | jquery-ui-resizable, jquery-ui-draggable, jquery-ui-button, jquery-ui-position |
| jQuery UI Draggable | jquery-ui-draggable | jquery-ui-mouse |
| jQuery UI Droppable | jquery-ui-droppable | jquery-ui-draggable |
| jQuery UI Menu | jquery-ui-menu | jquery-ui-core, jquery-ui-widget, jquery-ui-position |
| jQuery UI Mouse | jquery-ui-mouse | jquery-ui-core, jquery-ui-widget |
| jQuery UI Position | jquery-ui-position | jquery |
| jQuery UI Progressbar | jquery-ui-progressbar | jquery-ui-core, jquery-ui-widget |
| jQuery UI Resizable | jquery-ui-resizable | jquery-ui-mouse |
| jQuery UI Selectable | jquery-ui-selectable | jquery-ui-mouse |
| jQuery UI Selectmenu | jquery-ui-selectmenu | jquery-ui-menu |
| jQuery UI Slider | jquery-ui-slider | jquery-ui-mouse |
| jQuery UI Sortable | jquery-ui-sortable | jquery-ui-mouse |
| jQuery UI Spinner | jquery-ui-spinner | jquery-ui-button |
| jQuery UI Tabs | jquery-ui-tabs | jquery-ui-core, jquery-ui-widget |
| jQuery UI Tooltips | jquery-ui-tooltip | jquery-ui-core, jquery-ui-widget, jquery-ui-position |
| jQuery UI Widget | jquery-ui-widget | jquery |
| jQuery Form | jquery-form | jquery |
| jQuery Color | jquery-color | jquery |
| jQuery Schedule | schedule | jquery |
| jquery-query | jquery | |
| jquery-serialize-object | jquery | |
| jQuery Hotkeys | jquery-hotkeys | jquery |
| jquery-table-hotkeys | jquery, jquery-hotkeys | |
| jquery-touch-punch | jquery-ui-widget, jquery-ui-mouse | |
| jQuery Suggest | suggest | jquery |
| imagesloaded | ||
| Masonry (native Javascript) | masonry | imagesloaded |
| jQuery Masonry | jquery-masonry | jquery, masonry |
| ThickBox | thickbox | jquery |
| Jcrop | jcrop | jquery |
| SWFObject | swfobject | |
| moxiejs | ||
| Plupload Core | plupload | moxiejs |
| Plupload All Runtimes | plupload-all | plupload |
| Plupload HTML5 | plupload-html5 | plupload |
| Plupload Flash | plupload-flash | plupload |
| Plupload Silverlight | plupload-silverlight | plupload |
| Plupload HTML4 | plupload-html4 | plupload |
| plupload-handlers | plupload, jquery | |
| wp-plupload | plupload, jquery, json2, media-models | |
| SWFUpload | swfupload | |
| swfupload-all | swfupload | |
| SWFUpload Handlers | swfupload-handlers | swfupload-all, jquery |
| Threaded Comments | comment-reply | |
| JSON for JS | json2 | |
| Underscore js | underscore | |
| Backbone js | backbone | underscore, jquery |
| wp-util | underscore, jquery | |
| wp-sanitize | jquery | |
| wp-backbone | backbone, wp-util | |
| revisions | wp-backbone, jquery-ui-slider, hoverIntent | |
| imgareaselect | jquery | |
| mediaelement | jquery, mediaelement-core, mediaelement-migrate | |
| mediaelement-core | ||
| mediaelement-migrate | ||
| mediaelement-vimeo | mediaelement | |
| MediaElement.js (WP 3.6+) | wp-mediaelement | mediaelement |
| wp-codemirror | ||
| csslint | ||
| esprima | ||
| jshint | esprima | |
| jsonlint | ||
| htmlhint | ||
| htmlhint-kses | htmlhint | |
| code-editor | jquery, wp-codemirror, underscore | |
| wp-theme-plugin-editor | wp-util, wp-sanitize, jquery, jquery-ui-core, wp-a11y, underscore | |
| wp-playlist | wp-util, backbone, mediaelement | |
| zxcvbn-async | ||
| Password Strength Meter | password-strength-meter | jquery, zxcvbn-async |
| user-profile | jquery, password-strength-meter, wp-util | |
| language-chooser | jquery | |
| user-suggest | jquery-ui-autocomplete | |
| admin-bar | ||
| wplink | jquery, wp-a11y | |
| wpdialogs | jquery-ui-dialog | |
| Word Count | word-count | |
| Media Upload | media-upload | thickbox, shortcode |
| jQuery HoverIntent | hoverIntent | jquery |
| customize-base | jquery, json2, underscore | |
| customize-loader | customize-base | |
| customize-preview | wp-a11y, customize-base | |
| customize-models | underscore, backbone | |
| customize-views | jquery, underscore, imgareaselect, customize-models, media-editor, media-views | |
| customize-controls | customize-base, wp-a11y, wp-util, jquery-ui-core | |
| customize-selective-refresh | jquery, wp-util, customize-preview | |
| customize-widgets | jquery, jquery-ui-sortable, jquery-ui-droppable, wp-backbone, customize-controls | |
| customize-preview-widgets | jquery, wp-util, customize-preview, customize-selective-refresh | |
| customize-nav-menus | jquery, wp-backbone, customize-controls, accordion, nav-menu | |
| customize-preview-nav-menus | jquery, wp-util, customize-preview, customize-selective-refresh | |
| wp-custom-header | wp-a11y | |
| accordion | jquery | |
| shortcode | underscore | |
| media-models | wp-backbone | |
| wp-embed | ||
| media-views | utils, media-models, wp-plupload, jquery-ui-sortable, wp-mediaelement, wp-api-request | |
| media-editor | shortcode, media-views | |
| media-audiovideo | media-editor | |
| mce-view | shortcode, jquery, media-views, media-audiovideo | |
| wp-api | jquery, backbone, underscore, wp-api-request | |
| react | wp-polyfill | |
| react-dom | react | |
| moment | ||
| lodash | ||
| wp-polyfill-fetch | ||
| wp-polyfill-formdata | ||
| wp-polyfill-node-contains | ||
| wp-polyfill-element-closest | ||
| wp-polyfill | ||
| wp-tinymce-root | ||
| wp-tinymce | wp-tinymce-root | |
| wp-tinymce-lists | wp-tinymce | |
| wp-api-fetch | wp-polyfill, wp-i18n, wp-url, wp-hooks | |
| wp-annotations | wp-data, wp-hooks, wp-i18n, wp-polyfill, wp-rich-text | |
| wp-autop | wp-polyfill | |
| wp-blob | wp-polyfill | |
| wp-blocks | wp-autop, wp-blob, wp-block-serialization-default-parser, wp-data, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-polyfill, wp-shortcode, lodash | |
| wp-block-library | editor, lodash, wp-api-fetch, wp-autop, wp-blob, wp-block-editor, wp-blocks, wp-components, wp-compose, wp-core-data, wp-data, wp-date, wp-editor, wp-element, wp-html-entities, wp-i18n, wp-keycodes, wp-polyfill, wp-url, wp-viewport, wp-rich-text | |
| wp-block-serialization-default-parser | ||
| wp-block-editor | lodash, wp-a11y, wp-blob, wp-blocks, wp-components, wp-compose, wp-core-data, wp-data, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-rich-text, wp-token-list, wp-url, wp-viewport, wp-wordcount | |
| wp-components | lodash, moment, wp-a11y, wp-api-fetch, wp-compose, wp-dom, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-is-shallow-equal, wp-keycodes, wp-polyfill, wp-rich-text, wp-url | |
| wp-compose | lodash, wp-element, wp-is-shallow-equal, wp-polyfill | |
| wp-core-data | lodash, wp-api-fetch, wp-data, wp-deprecated, wp-polyfill, wp-url | |
| wp-data | lodash, wp-compose, wp-element, wp-is-shallow-equal, wp-polyfill, wp-priority-queue, wp-redux-routine | |
| wp-date | moment, wp-polyfill | |
| wp-deprecated | wp-polyfill, wp-hooks | |
| wp-dom | lodash, wp-polyfill | |
| wp-dom-ready | wp-polyfill | |
| wp-edit-post | jquery, lodash, postbox, media-models, media-views, wp-a11y, wp-api-fetch, wp-block-editor, wp-block-library, wp-blocks, wp-components, wp-compose, wp-core-data, wp-data, wp-dom-ready, wp-editor, wp-element, wp-embed, wp-i18n, wp-keycodes, wp-notices, wp-nux, wp-plugins, wp-polyfill, wp-url, wp-viewport | |
| wp-editor | lodash, wp-api-fetch, wp-blob, wp-block-editor, wp-blocks, wp-components, wp-compose, wp-core-data, wp-data, wp-date, wp-deprecated, wp-element, wp-hooks, wp-html-entities, wp-i18n, wp-keycodes, wp-notices, wp-nux, wp-polyfill, wp-url, wp-viewport, wp-wordcount | |
| wp-element | wp-polyfill, react, react-dom, lodash, wp-escape-html | |
| wp-escape-html | wp-polyfill | |
| wp-format-library | wp-block-editor, wp-components, wp-editor, wp-element, wp-i18n, wp-keycodes, wp-polyfill, wp-rich-text, wp-url | |
| wp-hooks | wp-polyfill | |
| wp-html-entities | wp-polyfill | |
| wp-i18n | wp-polyfill | |
| wp-is-shallow-equal | wp-polyfill | |
| wp-keycodes | lodash, wp-polyfill, wp-i18n | |
| wp-list-reusable-blocks | lodash, wp-api-fetch, wp-components, wp-compose, wp-element, wp-i18n, wp-polyfill | |
| wp-notices | lodash, wp-a11y, wp-data, wp-polyfill | |
| wp-nux | wp-element, lodash, wp-components, wp-compose, wp-data, wp-i18n, wp-polyfill, lodash | |
| wp-plugins | lodash, wp-compose, wp-element, wp-hooks, wp-polyfill | |
| wp-priority-queue | ||
| wp-redux-routine | wp-polyfill | |
| wp-rich-text | lodash, wp-data, wp-escape-html, wp-polyfill | |
| wp-shortcode | wp-polyfill, lodash | |
| wp-token-list | lodash, wp-polyfill | |
| wp-url | wp-polyfill | |
| wp-viewport | wp-polyfill, wp-element, wp-data, wp-compose, lodash | |
| wp-wordcount | wp-polyfill |
Список получен из глобальной переменной $GLOBALS[‘wp_scripts’]. Зарегистрированные скрипты могут меняться в зависимости от страницы на которой вы находитесь. В админке список будет больше.