wp_register_script_module()WP 6.5.0

Регистрирует JavaScript‑модуль (ES Module) в WordPress, чтобы затем подключать его на страницах по id.

После регистрации модуль можно подключить отдельно (например, условно — только на нужных страницах), а WordPress использует идентификатор модуля при формировании import map.

Регистрация не выводит скрипт на страницу — для вывода используется функция wp_enqueue_script_module().

Функцию нужно вызывать на следующих событиях, потому что вызов функции раньше чем эти события, может создать проблемы:

  • init - когда нужно зарегистрировать скрипт везде: в админке, фронте.

  • wp_enqueue_scripts, если нужно вызвать функцию в лицевой части сайта (фронт-энде).

  • admin_enqueue_scripts, чтобы вызвать в административной части.

  • login_enqueue_scripts - для страницы авторизации.

Дефолтные скрипты WP регистрируются на событии init. Сотрите функцию wp_default_scripts() и хук wp_default_scripts.

Работает на основе: WP_Script_Modules::register()

Хуков нет.

Возвращает

null. Ничего не возвращает (функция только регистрирует модуль).

Использование

wp_register_script_module( $id, $src, $deps, $version, $args );
$id(string) (обязательный)

Уникальный идентификатор модуля, который будет использоваться для import map и дальнейшего подключения.

Идентификатор модуля должен быть уникальным, потому что именно он используется как ключ при работе с модулем.

$src(string) (обязательный)
URL модуля (или путь относительно корня WordPress), по которому будет загружаться файл модуля.
$deps(массив)

Список зависимостей.

По умолчанию: array()

  • ...$0(строка|массив)
    Массив идентификаторов модулей скриптов, являющихся зависимостями этого модуля скрипта.

    Зависимости могут быть строками или массивами. Если это массивы, они должны содержать ключ id с идентификатором модуля скрипта и могут содержать ключ import со значением static или dynamic.

    • id(строка)
      Идентификатор модуля скрипта.

    • import(строка)
      Необязательно. Тип импорта. Может быть:

      • static - означает «обычная» зависимость, которую модуль использует как часть своего основного графа импортов (то есть она нужна сразу, чтобы модуль мог корректно выполниться).
        WordPress по умолчанию трактует зависимости как static, включая случай, когда зависимость задана просто строкой в массиве $deps (без массива с ключами id/import).

      • dynamic - означает, что зависимость предполагается для динамического импорта (через import()), то есть она может понадобиться не на старте, а позже — когда код решит её подгрузить.​
        Внутри WordPress это влияет на то, как собираются зависимости для разных «типов импорта» (статические, динамические или оба варианта) при построении итоговой структуры подключаемых модулей.​

      Пример:

      $deps = [ 'myplugin/vendor' ];
      
      $deps = [
      	[ 'id'  => 'myplugin/vendor', 'import' => 'dynamic' ],
      ];

      По умолчанию: static

$version(строка|false|null)

Строка, указывающая номер версии скрипта. Он добавляется к URL в виде строки запроса для инвалидации кэша в браузере.

  • false — текущая версия WordPress.
  • null — версия не добавляется.

По умолчанию: false

$args(массив)

Массив дополнительных args.

По умолчанию: []

  • in_footer(true|false)
    Печатать ли модульный скрипт в футере. Актуально только для блочных тем.
    По умолчанию: 'false'

  • fetchpriority(auto|low|high)
    Приоритет выборки.
    По умолчанию: 'auto'

Примеры

0

#1 Регистрация и подключение модуля

Регистрируем модуль на init, а подключаем на фронтенде через очередь.

add_action( 'init', 'my_register_modules' );
add_action( 'wp_enqueue_scripts', 'my_enqueue_modules' );

function my_register_modules() {
	$src = plugins_url( 'assets/js/app.js', __FILE__ );

	wp_register_script_module( 'my_plugin_app', $src, [], '1.0.0', [ 'in_footer' => true ] );
}

function my_enqueue_modules() {
	wp_enqueue_script_module( 'my_plugin_app' );
}
0

#2 Модуль с зависимостями (в админке)

Регистрируем модуль с зависимостью от другого модуля и подключаем только в админке.

add_action( 'init', 'my_register_admin_modules' );
add_action( 'admin_enqueue_scripts', 'my_enqueue_admin_modules' );

function my_register_admin_modules() {
	wp_register_script_module(
		'my_plugin_admin',
		plugins_url( 'assets/js/admin.js', __FILE__ ),
		[ 'myplugin/app' ],
		'1.0.0',
		[ 'in_footer' => true ]
	);
}

function my_enqueue_admin_modules() {
	wp_enqueue_script_module( 'my_plugin_admin' );
}

Список изменений

С версии 6.5.0 Введена.
С версии 6.9.0 Added the $args parameter.

Код wp_register_script_module() WP 7.0

function wp_register_script_module( string $id, string $src, array $deps = array(), $version = false, array $args = array() ) {
	wp_script_modules()->register( $id, $src, $deps, $version, $args );
}