WP_Query:如何在分配posts_per_page之前测试粘贴帖子?

时间:2014-09-17 14:47:46

标签: php wordpress wp-query

有没有办法测试'是否有粘贴帖子? 如果有一个粘性帖子,我想使用'posts_per_page' => '3',如果没有,请使用4,因为我发现粘性帖子会添加到每个帖子中网页'这打破了布局:(

我有一个WP_query如下:

$article_args = array(
                'post_type' => 'post',
                'posts_per_page' => '3',
                'post_status' => 'publish',
                'order' => 'DESC'
            );
            $article_query = new WP_Query($article_args);

这可能吗,也许在args数组之前测试一下并使用适当的数字?

是的,我考虑过ignore_sticky_posts,但我确实想要将它们包括在内。

任何了解PHP比我更好的人的建议?! :/

感谢。马丁。

2 个答案:

答案 0 :(得分:0)

不幸的是没有,但可能还有另一种方法来实现你所追求的目标。

你可以简单地抓住最新的粘贴帖子,先显示,然后在第二个查询中抓住剩下的帖子(或者接下来的3个帖子)。

这样,您每页都会获得1个粘性(如果存在)和3个正常粘性。

我们不知道你的最终目标,所以这可能对你无法使用。

答案 1 :(得分:0)

粘性帖子会保存为一个选项,您可以使用$sticky = get_option( 'sticky_posts' );进行检查。这将返回一个包含帖子ID的数组。您只需检查该选项是否为空,然后相应地修改您的参数

你可以做这样的事情

$sticky = get_option( 'sticky_posts' );
if( $sticky ) {
    $article_args = array(
        'post_type' => 'post',
        'posts_per_page' => '3',
        'post_status' => 'publish',
        'order' => 'DESC'
    );
}else{
    $article_args = array(
        'post_type' => 'post',
        'posts_per_page' => '4',
        'post_status' => 'publish',
        'order' => 'DESC'
    );
}

$article_query = new WP_Query($article_args);