Php Wordpress:!empty($title)在$title为空时返回1
我正在改造一个网站,发现了一个奇怪的怪癖 在widget函数(位于Php Wordpress:!empty($title)在$title为空时返回1,php,wordpress,Php,Wordpress,我正在改造一个网站,发现了一个奇怪的怪癖 在widget函数(位于default functions.php)代码中,有一行代码表示: if ( !empty( $title ) ) { echo $before_title . '[' . $title . '] ' . $after_title; } function widget( $args, $instance ) { extract($args); $title = apply_filters( 'w
default functions.php
)代码中,有一行代码表示:
if ( !empty( $title ) ) { echo $before_title . '[' . $title . '] ' . $after_title; }
function widget( $args, $instance ) {
extract($args);
$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
$text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . '[' . $title . '] ' . $after_title; } ?>
<div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
<?php
echo $after_widget;
}
如果(!empty($title)){echo$before_title.['.$title.]'.$after_title;}
函数小部件($args$instance){
摘录($args);
$title=apply_过滤器('widget_title',空($instance['title'])?“”:$instance['title'],$instance$this->id_base);
$text=apply_过滤器('widget_text',空($instance['text'])?“”:$instance['text'],$instance);
echo$before_小部件;
如果(!empty($title)){echo$before_title.['.$title.]'.$after_title;}?>
如果empty()检查的字符串有空格,则返回false
。您需要使用类似于$trimmedTitle=trim($title);If(empty($trimmedTitle)){doStuff();}
以去除空白。您可以检查应用过滤器的功能,但我确信在与WP相关的记忆中,它会在传递的值周围添加一些html
$instance['title']
是来自DB的文章标题的值
$title
然而,这是测试前调用一些行的结果
因此,您必须针对$instance['title']
进行测试,而不是$title
找到问题。或者我应该说@Otto找到了解决方案
就在这里:
他帮我查看了$wp\u过滤器,发现优雅主题(主题制作人)在$title中为他们自己的主题添加了一个空格。var\u dump($title)和var\u dump(!empty($title))打印了什么?@Sanford当你说“
是给$title
的,你说的是空字符串还是字面上的引号?@RUJordan我的意思是,在代码中(请参见$title
的设置位置),有一个标准的空字符串。但是当我再次运行代码时,这次在$title
和$instance('title')上使用了一个strcmp
)
,它为空时的两个值是不同的。@Rangad-运行这两个调用会给出:Var Dump title:string(1)““Var Dump!empty(title):bool(true),因此您的字符串不是空的。请参阅@Uthr的答案。感谢您的指导。真正的问题是一个平台(我在其中运行生产WP)相同的代码库不会导致此问题。因此,修改WP标准代码将不起作用。奇怪的是,小部件标题中根本没有任何价值。不知道如何清除它,如果它在数据库中,因为我探索了数据库,没有空格。好吧,我花了更多时间,现在知道您正在使用真正的问题是,当$instance['title]为空时,当apply_过滤器应该为空时,为什么现在会提供一个额外的空间作为输出值
也为空。apply_filters调用插件来处理传递的值。因此,您安装或创建的某些插件即使为空也会对标题执行一些默认格式设置。我唯一的问题是我已禁用所有插件。因此不确定是什么在修改它-在代码中。