繁体   English   中英

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

[英]WP_Query: How to test for sticky posts before assigning posts_per_page?

有什么办法可以“测试”是否有便利贴? 如果有粘性帖子,我想使用'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? :/

谢谢。 马丁。

不幸的是没有,但是可能有另一种方式来实现自己的目标。

您可以简单地抓取最新的即时贴,然后首先显示该即时贴,然后在第二个查询中,抓取其余的即时贴(或者接下来的3个即时贴)。

这样,每页您将获得1个粘滞(如果存在)和3个普通粘滞。

我们在这里不知道您的最终目标,因此这可能对您不可用。

粘性帖子被保存为一个选项,您可以使用$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM