有些脚本和样式是与某个shortcode关联的,所以通常在该shortcode被使用时加载即可。WordPress 3.6新增的函数has_shortcode可以轻松检测内容中是否有某个shortcode,但有一个缺陷,就是不能检测嵌套在shortcode中的shortcode。

用has_shortcode函数完成上述功能,脚本如下

function your_shortcode_scripts()
{
	global $post;
	if( isset($post->post_content) && has_shortcode( $post->post_content, 'your-shortcode') )
	{
	     wp_enqueue_script( 'whatever');
	}
}
add_action( 'wp_enqueue_scripts', 'your_shortcode_scripts');

如果待检测的shortcode有可能被嵌套在其它shortcode中,上述方法会失效,推荐使用这里的方法。

function your_shortcode_scripts()
{
	global $post;
	
	$shortcode = 'your-shortcode';
	
	if( isset($post->post_content) && stripos($post->post_content, '[' . $shortcode) !== false )
	{
		wp_enqueue_script( 'whatever');
	}
}
add_action( 'wp_enqueue_scripts', 'your_shortcode_scripts');