品类与“粘性”的结合

时间:2011-01-06 作者:JakeParis

我的主页上有一个自定义查询,显示某个类别中的所有帖子。我需要这个查询来尊重粘性帖子,但根据我的研究,类别查询似乎忽略了粘性。我的问题有两个(半)方面:

有人能告诉我数据库中的粘性在哪里/如何应用于帖子吗?我看不出来wp_postmetawp_posts. This one is most important and will probably be enough to get you the win accepted answer.我只是想问一下,我的问题是,虽然我认为这不会对答案产生影响。

$getHighlights = array(
    \'posts_per_page\' => 7,
    \'post_type\' => array(\'post\',\'Event\'),
    \'category_name\' => \'Highlights\', 
);
很抱歉标题太长,但我想弄清楚我的要求是什么

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

只需添加\'post__in\' => get_option(\'sticky_posts\') 对于您的查询,将您的查询限制为仅限于粘性帖子。所以

$getHighlights = array(
    \'numberposts\' => 7,
    \'post_type\' => array(\'post\',\'Event\'),
    \'post__in\' => get_option(\'sticky_posts\'),
    \'category_name\' => \'Highlights\'
);
应该对你有用。

编辑:这是如何合并两个数组以获得位于查询顶部的粘性帖子:

$getHighlights_sticky = get_posts( array(
        \'numberposts\' => 7,
        \'post_type\' => array(\'post\',\'Event\'),
        \'post__in\' => get_option(\'sticky_posts\'),//it should be post__in but not posts__in
        \'category_name\' => \'Highlights\'
    ));
$getHighlights_other = get_posts( array(
        \'numberposts\' => 7 - count( $getHighlights_sticky ),
        \'post_type\' => array(\'post\',\'Event\'),
        \'post__not_in\' => get_option(\'sticky_posts\'),//it should be post__not_in but not posts__not_in
        \'category_name\' => \'Highlights\'
    ));
foreach ( array_merge( $getHighlights_sticky, $getHighlights_other ) as $post ) {
    setup_postdata( $post );

    // your display loop

}
这将显示7个帖子,粘滞在顶部(当然,这是假设你没有超过7个粘滞,否则一切都会一团糟……)(编辑以使用numberposts 根据OP以下评论……)

SO网友:Rarst

每个帖子不保存粘性,有sticky_posts 保存这样的数组的选项。所以你可以用$sticky_posts = get_option(\'sticky_posts\');

看见Sticky Post Parameters 有关查询粘滞物的详细信息,请参阅Codex。

我不完全确定什么是使您的查询尊重粘性的最佳方法。通过快速查看代码,很可能is_home 条件被覆盖,这将启动粘滞。可能会钩住某个地方并伪造该条件,但这可能会在处理过程中进一步破坏某些东西。

结束

相关推荐

WordPress删除wp_List_Categories中最后一项的分隔符

我正在尝试删除最后一个分隔符(通常是<br/> 标记,但我将其从wp\\u list\\u categories的最后一个链接更改为“/”)。基本上我想要这个:类别1//类别2//类别3//看起来像这样:类别1//类别2//类别3以下是我当前使用的代码:<?php $cat_array = array(); $args = array( \'author\' => get_the_author_meta(\'id\'),&#x