我有自定义的帖子类型叫做要求。我想在网站的前端显示需求列表。
这是我的需求列表的模板文件代码:
<div id="listing_loader">Loading...</div>
<div id="listing_ajax_container">
<?php
wp_reset_query();
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if(is_front_page()){
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
}
$args = array(
'post_type' => 'requirement',
'post_status' => 'publish',
'paged' => $paged,
'posts_per_page' => $prop_no,
'orderby' => 'meta_value',
'order' => 'DESC',
);
// print_r($args);
add_filter( 'posts_orderby', 'my_order' );
$prop_selection = new WP_Query($args);
remove_filter( 'posts_orderby', 'my_order' );
$counter = 0;
while ($prop_selection->have_posts()): $prop_selection->the_post();
include(locate_template('req-listing.php'));
endwhile;
wp_reset_query();
?>
</div>
我收到WordPress database error: [Unknown column 'wp_postmeta.meta_value' in 'order clause']
错误。
那我该怎么解决呢?
答案 0 :(得分:0)
使用自定义WP_Query并且您想按自定义字段meta_value
订购结果时,您应该注意查询中还必须存在meta_key=keyname
。
例如:
$query = new WP_Query( array ( 'post_type' => 'requirement', 'orderby' => 'meta_value_num', 'meta_key' => 'price' ) );
另请注意,排序将按字母顺序排列,对于字符串(即单词)很好,但对于数字可能是意外的(例如1,3,34,4,56,6等,而不是1,3,4你自然会想到的,6,34,56)。使用meta_value_num
代替数值。
有关详细信息,请参阅here。