Добавление 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’]. Зарегистрированные скрипты могут меняться в зависимости от страницы на которой вы находитесь. В админке список будет больше.