Get Posts by IDs (optionally)

时间:2013-11-13 作者:jay

我想检查一个变量是否包含帖子ID列表,然后我只想查询那些ID的帖子,但如果该变量为空,那么我想显示所有帖子。

问题:如果我将ID提供给post__in, 然后它会获取带有这些ID的帖子,但是如果它是空的,那么它应该返回all posts 但它没有返回任何帖子。

例如,以下代码将获取ID为1、2、3的帖子。但是,如果$ids 为空。在这种情况下,它不应该返回所有帖子吗?如果$ids 是空的,即。$ids = ""; ?

$ids = \'1,2,3\';
$arr = explode("," ,$ids);

$args = array(
    \'posts_per_page\' => $number,    
    \'post__in\' => $arr, 
);

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

WordPress似乎没有忽略空post__in 参数。所以你必须自己这样做。。。

$ids = \'1,2,3\';

if ( $ids ) {
    $arr = explode("," ,$ids);

    $args = array(
        \'posts_per_page\' => $number,    
        \'post__in\' => $arr
    );
} else {
    $args = array(
        \'posts_per_page\' => $number
    );
}

SO网友:helgatheviking

Krysiek答案的另一种选择。他们都应该完成相同的事情,只需添加post__in 参数,如果$ID存在。

$ids = \'1,2,3\';
$arr = explode("," ,$ids);

$args = array(
    \'posts_per_page\' => $number,    
);

if( $ids )
   $args[\'post__in\'] = $arr; 

结束

相关推荐

Exclude page name from loop

我当前正在使用此循环:if (is_single() || is_page() ) : if (have_posts() ) : while (have_posts() ) : the_post(); 如何在循环中排除多个页面例如,我想排除页面example.com/music 和example.com/contact.编辑:我已经按照通用汽车提供的方式做了,但我的音乐和联系人页面在申请后一直在加载。<?php if (is_single() |