已经有一个函数可以检查帖子是否有短代码:has_shortcode()
:
function enqueue_script_if_shortcode_is_detected() {
global $post;
wp_register_script( \'leweb-widgets\', get_stylesheet_directory_uri() . \'/includes/leweb-widgets.php\', \'1.0\', true );
if ( has_shortcode( $post->post_content, \'leweb_suggested_events\' ) ) {
wp_enqueue_script(\'leweb-widgets\');
}
}
add_action( \'wp_enqueue_scripts\', \'enqueue_script_if_shortcode_is_detected\' );
请记住,以这种方式检查帖子:
将不知道是否在小部件或自定义字段中使用了短代码
无法在存档页上正常工作正在使用全局
$post
变量,应尽可能避免使用。尤其是在圈外我建议检查一下
is_singular()
和使用
get_queried_object()
获取当前帖子。
function enqueue_script_if_shortcode_is_detected() {
wp_register_script( \'leweb-widgets\', get_stylesheet_directory_uri() . \'/includes/leweb-widgets.php\', \'1.0\', true );
if ( is_singular() ) {
$post = get_queried_object();
if ( has_shortcode( $post->post_content, \'leweb_suggested_events\' ) ) {
wp_enqueue_script(\'leweb-widgets\');
}
}
}
add_action( \'wp_enqueue_scripts\', \'enqueue_script_if_shortcode_is_detected\' );
但是如果您的脚本加载到页脚中(您的是页脚),如果您添加
wp_enqueue_script(\'leweb-widgets\');
到快捷码回调。通过这种方式,您可以确保无论在何处使用短代码,都会加载脚本。