wp_add_inline_script() WP 4.5.0

Додає додатковий JavaScript до зареєстрованого скрипту.

JS додається прямо в HTML документ, після основного (вказаного) скрипта. Можна вказати, щоб до скрипта.

Код скрипта вказується у параметрі $data. Якщо на один обробник (назва) додано кілька скриптів, то вони не будуть виведені в порядку їх додавання, в єдиному блоці <script> .

Використовувати функцію потрібно після того, як основний скрипт доданий у чергу на висновок, але ще не виведено на екран. Тобто. якщо скрипт доданий і вже виведений на екран використання, функція нічого не виведе.

Аналогічна функція для стилів: wp_add_inline_style()

Працює на основі:
wp_scripts()

Хуків немає.

Повертає

true|false. True якщо вдалося додати код скрипта, false інакше.

Використання

wp_add_inline_script($handle, $data, $position);
$handle
(рядок) (обов’язковий)
Назва (ID) скрипта, до якого буде додано додатковий блок скрипту.
$data
(рядок) (обов’язковий)
JS код у вигляді рядка. Відкриваючий/закриваючий
<script> додається автоматично.
$position
(рядок)
Куди додати код: до (before) або після (after) вказаного у
$handleскрипті.


За замовчуванням: ‘after’

Приклади

0

#1 Демонстрація роботи

Підключимо JS код після файлу JS:

add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_typekit' );

function mytheme_enqueue_typekit(){

	wp_enqueue_script( 'mytheme-typekit', 'https://use.typekit.net/.js', array(), '1.0' );

	wp_add_inline_script( 'mytheme-typekit', 'try{ Typekit.load({ async: true }); }catch(e){} ' );

}

/* Отримаємо в HTML коді
<script type="text/javascript" src="https://use.typekit.net/.js?ver=1.0"></script>
<script type="text/javascript"> try{ Typekit.load({ async: true }); }catch(e){} </script>
*/
0

#2 Передача даних з PHP до JS

Допустимо нам потрібно вказати ajax URL для нашого скрипту та якісь ще додаткові параметри. Це можна зробити так:

wp_enqueue_script( 'my-script', 'https://url-to/my-script.js' );

wp_add_inline_script( 'my-script', 'const MYSCRIPT = ' . json_encode( [
	'ajaxUrl' => admin_url( 'admin-ajax.php' ),
	'param1' => 'some value',
	'param2' => 'value 2',
]), 'before');
0

#3 Довільний код JS перед файлом

Допустимо у нас вже підключений файл скрипту my_scripts.jsз ідентифікатором my_scripts. І нам потрібно доповнити його довільним кодом. Наприклад йому необхідно вказати глобальні змінні: color1 і color2:

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>
*/
0

#4 Кілька дзвінків 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>
*/

нотатки

список змін

З версії 4.5.0Введено.

Код wp_add_inline_script() WP 6.0.2

function wp_add_inline_script( $handle, $data, $position = 'after' ) {
	_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle );

	if ( false !== stripos( $data, '</script>' ) ) {
		_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: 1: <script>, 2: wp_add_inline_script() */
				__( 'Do not pass %1$s tags to %2$s.' ),
				'<code><script></code>',
				'<code>wp_add_inline_script()</code>'
			),
			'4.5.0'
		);
		$data = trim( preg_replace( '#<script[^>]*>(.*)</script>#is', '$1', $data ) );
	}

	return wp_scripts()->add_inline_script( $handle, $data, $position );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *