何时在GET_POSTS之后使用IF语句?

时间:2016-09-21 作者:Malisa

同时查看codex 对于get_posts 函数,我注意到在大多数示例中,它们在调用get_posts

示例:

<?php
$args = array( \'posts_per_page\' => 10, \'order\'=> \'ASC\', \'orderby\' => \'title\' );
$postslist = get_posts( $args );
foreach ( $postslist as $post ) :
  setup_postdata( $post ); ?> 
    <div>
        <?php the_date(); ?>
        <br />
        <?php the_title(); ?>   
        <?php the_excerpt(); ?>
    </div>
<?php
endforeach; 
wp_reset_postdata();
?>
以及:

<?php
$args = array( \'post_type\' => \'attachment\', \'posts_per_page\' => -1, \'post_status\' =>\'any\', \'post_parent\' => $post->ID ); 
$attachments = get_posts( $args );

**if ( $attachments ) {**
    foreach ( $attachments as $attachment ) {
    echo apply_filters( \'the_title\' , $attachment->post_title );
    the_attachment_link( $attachment->ID , false );
    }
}
?>
我不确定抄本是否假设你总是有帖子,所以不需要检查?

我个人总是使用它,但不知道是否有人可以启发我,如果有必要的话。何时是使用if语句的正确时间?

2 个回复
SO网友:Anwer AR

在我看来,我们不能保证特定查询的数据库中存在post。可能它返回一个空数组。因此,最好使用条件语句。另外,我认为我们正在处理一个数组,所以要检查空数组,我们应该使用phpempty 作用

例如:

if ( !empty( $attachments ) ) {
  foreach ( $attachments as $attachment ) {
   // do some stuff here.
  }
}
else {
  _e(\'Sorry! No posts found.\');
}

SO网友:birgire

这个get_posts() 可以返回空数组

在这种情况下,foreach循环类似于:

foreach ( [] as $post ) 
{
    // ...
}
在那里没有什么可以循环的。此代码有效。

如果代码段类似于:

echo \'<ul>\';
foreach ( $postslist as $post ) 
{
    // <li>...</li>
}
echo \'</ul>\';
那么我们需要检查一下$postslist 为非空:

if( $postslist )
{   
    echo \'<ul>\';
    foreach ( $postslist as $post ) 
    {
        // <li>...</li>
    }
    echo \'</ul>\';
}
避免显示空<ul></ul> 列表

这是一个例子,在许多例子中,检查帖子列表是否为非空是有意义的,但它不是必需的,就像您只需要计数一样:

echo count( (array) $postslist );

相关推荐

Calling hooks in functions

我习惯于使用主题挂钩,定期添加功能,但难以使用插件挂钩来过滤内容。这是我所知的极限,我试图理解这个过程,但没有用。我正在使用GigPress 管理事件。它允许您添加一个节目(基于日期),并将该节目与帖子(标准WP帖子)关联。我已经创建了一个自定义的帖子类型—productions—来关联节目,而不仅仅是一般的博客帖子。插件有一个钩子-gigpress_related_post_types —允许您用自己选择的任何CPT交换帖子。如果我直接编辑插件,它就会工作,将“帖子”替换为“产品”。如果我添加了我希望是