if the post has content

时间:2013-11-06 作者:Jamie

我正在建立一个单页WordPress网站。我的网站中列出了一些没有内容的页面。例如,我将获得空的博客页面以及博客模板。所以我想我可以检查一下页面是否有内容,是否可以继续发布这些信息。我很难让它工作。我正在对主页使用自定义查询。所以我想我能做到

 if ( $page_query->have_posts() ) : while ( $page_query->have_posts() ) : $page_query->the_post();
 if( $page_query->post_content != \'\'){
       get_template_part( \'content\', get_post_format() );
 }
 endwhile; endif;
问题是我在那个代码上出错了,我不知道为什么。我得到这个错误

注意:未定义的属性:WP\\u Query::$post\\u content in

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

内容是post 对象,而不是查询对象。

使用$postget_post() 而是:

if( \'\' !== get_post()->post_content ) {
// do something
}

SO网友:Juan Solano

What about

if ( !empty( get_the_content() ) ){ 
//code 
}
SO网友:Thomas Fellinger

多年来,我已经多次实现了一些“has\\u content()”方法,而且中间总是有足够的时间,所以我需要再次搜索来回答这个问题。

无论如何,这是我的解决方案,我希望下次在这里找到它,因此仅供参考。

所有“内部循环”函数都可以替换为post对象“post\\U内容”

在函数中。php和类似文件:

// write inside the loop
$the_content = apply_filters(\'the_content\', get_the_content());
if ( !empty($the_content) ) {
  echo $the_content;
}
// with post object by id
$post = get_post(12); // specific post
$the_content = apply_filters(\'the_content\', $post->post_content);
if ( !empty($the_content) ) {
  echo $the_content;
}

as功能

// call inside the loop
function mytheme_has_content(){
  return !empty(apply_filters(\'the_content\', get_the_content()));
}
循环内的模板:

<?php if ( $customQuery->have_posts() ) {?>
  <?php while ( $customQuery->have_posts() ) {
    $customQuery->the_post(); ?>
    <?php $the_content = apply_filters(\'the_content\', get_the_content()); ?>
    <!-- html -->
    <?php if ( !empty($the_content) ) { ?>
      <div class="content">
        <?php echo $the_content; ?>
      </div>
    <?php } ?>
  <?php } ?>
  <?php wp_reset_postdata(); ?>
<?php } ?>

SO网友:Michelle

这同样有效,并测试空段落标记或&nbsp; 可能导致正常检查失败的内容。看见http://blog.room34.com/archives/5360 对于最初的想法-只需在此处记录,以便我可以再次找到它O)

把这个放在你的函数中。php:

function empty_content($str) {
    return trim(str_replace(\'&nbsp;\',\'\',strip_tags($str))) == \'\';
}
并将此放在要运行检查的位置:

if (function_exists(\'empty_content\') && empty_content($post->post_content)) { ... }
那会回来的true 如果内容为空,false 如果没有。

结束

相关推荐

检测POST_CONTENT中的嵌入URL

我需要改变WP在内容中给定嵌入URL时输出html的方式。WP编辑器中的内容示例:This is standard content and will be wrapped in a \'p\' tag. But check out this cool vid: http://www.youtube.com/watch?v=3JJv4TvURj4 This will be output as another \'p\' tag. The above URL will be