好的,我正在尝试检查帖子内容中的短代码,以便根据需要将脚本排队。
我有这个:
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。
另一件奇怪的事是,如果我在短代码上面添加任何内容,甚至只是添加一个
上方-将使其按预期工作。
还有其他人遇到过这种情况吗?是虫子吗?有没有办法修复它?
非常感谢您的任何意见!
最合适的回答,由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;
}