仅当脚本尚未入队时才将其入队

时间:2013-11-17 作者:enam

我想在短代码输出中包含一个脚本,因此我正在尝试以下操作:

function my_shortcode( $atts, $content = null ) {
    extract(shortcode_atts(array(
            \'title\'  => \'\',
           ), $atts));

    wp_enqueue_script(\'custom-script\'); 

}
我已经注册了这个脚本,如果使用了上面的短代码,就可以将它排队。然而,我只想包含该文件一次,即使该短代码被多次使用。当前,如果短代码被多次使用,则每次都会包含脚本。有可能吗?

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

WordPress排队系统应该防止多次包含同一脚本,并且在我测试它时会这样做。例如,以下命令将核心脚本排队,并echo这是一个计数器。如果我在帖子中输入这个短代码4次,我会得到“0123”,但媒体脚本只加载一次。同一测试适用于我尝试的其他几个脚本。

function my_shortcode( $atts, $content = null ) {
    extract(shortcode_atts(array(
            \'title\'  => \'\',
           ), $atts));
    static $counter = 0;
    echo $counter++;
    wp_enqueue_script(\'wp-mediaelement\'); 

}
add_shortcode(\'enq\',\'my_shortcode\');
如果你一遍又一遍地加载相同的脚本,那么你的网站就有问题了,但我不知道从哪里开始猜测。

SO网友:Nicolai Grossherr

您可以使用wp_script_is() 要确定脚本是否已排队,并在条件中使用它,请执行以下操作:

if( ! wp_script_is( \'custom-script\', \'enqueued\' ) ) {
    // your code here
}
wp_script_is() 采用两个参数$handle$list - 后者可以是:registered, enqueued/queue, doneto_do; 它回来了truefalse.

结束

相关推荐

Strip shortcode from excerpt

我有一个挑战,我发现我不是网络上唯一一个有同样问题的人,然而,目前还没有解决方案。我正在尝试从我的自定义帖子类型摘录中删除短代码。以下是我的示例:http://guidepaperback.com/city/new-century-hotel/在侧边栏中有一个“邻居”小部件,它显示带有摘录的图像。。。一些人正在展示这个问题。有什么建议吗?提前感谢