正在检查帖子内容中的短码,但内容返回为空

时间:2014-05-15 作者:Nick Young

好的,我正在尝试检查帖子内容中的短代码,以便根据需要将脚本排队。

我有这个:

    if( plugin_has_shortcode() ) {
        // Load CSS
        wp_enqueue_style( \'plugin-css\', \'plugin.css\', array(), null );
    }
这是我的plugin_has_shortcode 功能:

    function plugin_has_shortcode() {
        global $post;

        if ( strpos( $post->post_content, \'[shortcode\' ) ) {
            return true;
        }

         return false;
    }
这在大多数情况下都有效。我遇到的问题是,当我将短代码添加到编辑器顶部时[shortcode] 之前没有其他内容$post->post_content 返回为空字符串,并使我的支票返回false。

另一件奇怪的事是,如果我在短代码上面添加任何内容,甚至只是添加一个  上方-将使其按预期工作。

还有其他人遇到过这种情况吗?是虫子吗?有没有办法修复它?

非常感谢您的任何意见!

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

如果短代码在最开始strpos 返回评估为false的0:

警告

此函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。有关更多信息,请阅读布尔值部分。使用===运算符测试此函数的返回值。

http://www.php.net/manual/en/function.strpos.php

因此,请按以下方式更改代码:

function plugin_has_shortcode() {
    global $post;
    if ( strpos( $post->post_content, \'[shortcode\' ) !== false ) {
        return true;
    }
    return false;
}
甚至更短:

function plugin_has_shortcode() {
    global $post;
    return strpos( $post->post_content, \'[shortcode\' ) !== false;
}

结束

相关推荐

Manipulated shortcode output

我开发的一个注册短代码的插件有问题。短代码返回一个包含有效HTML的字符串,但一些主题似乎操纵了短代码返回的HTML,我真的不明白原因是什么。例如,这是我的短代码的正确输出:<div class=\"tile\"> <a> <img src=\"0.jpg\" /> <div class=\"caption\"> <p>Kate</p> </div&