显示所有自定义帖子类型的帖子,并按可选的meta_key进行排序

时间:2011-05-02 作者:dashaluna

我有一个自定义帖子类型(CPT),名为property. 我注册了一处特色房产metabox如本问题所述”How do I create a featured post within a custom post type?“。因此,特色物业meta_key=\'property_featured\'meta_value=on.

我想做的是展示all property 发布,但按meta_key=\'property_featured\'. 因此,特色属性将首先出现在第一页的列表中。行为类似于Sticky Posts 功能。还有其他的property 帖子将按创建日期排序。此外,我需要确保分页工作正常-处理所有property 一起发布。我使用自定义分页代码解释here. (希望这有意义)。

我尝试为WP\\U查询指定参数。但是,如果我指定:

\'meta_key\' => \'property_featured\',
\'orderby\' => \'meta_value\'
那么only property 带有该键的帖子显示为与all property 职位。

如果我删除meta_key 从参数中,查询不知道按什么排序

如何显示所有property 发布,确保featured 一个先出现,其他的都出现property 按发布日期发布订单?

非常感谢,Dasha

2 个回复
最合适的回答,由SO网友:kaiser 整理而成
<?php
// query posts
$query_property = query_posts( array( 
     \'orderby\'    => \'date meta_value\' // orderby date AND meta value
) );

// First loop
$query_feat = $query_string.\'&meta_value=on&meta_key=property_featured\';
// Offset for second loop
$query_all = $query_string.\'&offset=3&meta_key=property_featured\';

// First loop
if ( $query_feat->have_posts() : while ( $query_feat->have_posts() ) : # etc....
    // do stuff
endif;

// Second loop
if ( $query_all->have_posts() : while ( $query_all->have_posts() ) : # etc....
    // do stuff
endif;
?>
SO网友:Rarst

我觉得你想对她做的有点太复杂了。实际上,您需要应用两个(meta和date)排序顺序。此外,我认为按元值排序对根本没有该值的帖子不起作用。

Stickes是精确的比较,但请注意,它们不是由SQL请求处理的,而是由完全独立的代码处理的——它们被重新排序、获取并应用于已完成查询的结果。

除非你想分叉并重写粘贴逻辑,否则我认为最简单的方法是将你的特色帖子移动到单独的循环中。

结束

相关推荐