Подключение скриптов/стилей, если в контенте есть шорткод

Подключение и проверка на всех страницах

Этот код показывает, как подключать файл скрипта или стилей по условию - если в отображаемом контенте есть указанный шорткод.

// Подключение скрипта, если на странице есть указанный шорткод.
// Используем фильтр как событие.
add_filter( 'the_posts', 'has_my_shortcode' );

function has_my_shortcode( $posts ){

	if( is_admin() || empty( $posts ) || ! is_main_query() ){
		return $posts;
	}

	$shortcode_name = 'my_shortcode';

	foreach( $posts as $post ){

		if( has_shortcode( $post->post_content, $shortcode_name ) ){
			add_action( 'wp_enqueue_scripts', 'add_my_scripts' );

			break;
		}
	}

	return $posts;
}

// скрипты подключать, если есть шорткод
function add_my_scripts() {
	$theme_url = get_stylesheet_directory_uri();

	wp_enqueue_script( 'my_script', "{$theme_url}/my_script.js" );
}

Подключение и проверка для отдельных страниц - is_singular()

// Подключение скриптов/стилей, если в контенте есть шорткод
add_action( 'wp_head', 'my_shortcode_styles' );

function my_shortcode_styles() {
	global $post;

	$shortcode_name = 'my_shortcode_name';

	if(
		! ( $post && is_singular() && has_shortcode( $post->post_content, $shortcode_name ) )
	){
		return;
	}

	?>
	<style>
		.foo{ color: red; }
	</style>
	<?php
}

Эта заметка встроена в: Фронтэнд. 15+ хуков для functions.php