我试图获得3页,销售,出租和农业,以显示他们的自定义分类属性。出租和农业运作良好,但出于某种原因,销售显示出所有类别的房地产。
我已经尝试了我能想到的一切,但似乎都不起作用,所以我想知道这里是否有人有什么想法?请使用WPQuery查看下面的代码。
我已经检查了我的WP安装,并且在没有Sales自定义分类类型的Sales中肯定会显示属性。然而,出租和农业的代码是一样的,它们工作得很好。
同样在销售中,分页似乎被破坏了,显示了9个可能的页面,然后当我单击第2页时,它会下降到4页。同样,其他类别也可以。
我真的很感谢你的帮助!谢谢
$host = $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'REQUEST_URI\'];
if($host == \'www.website.co.uk/status/lettings/\') {
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$query = new WP_Query( array(
\'post_type\' => \'properties\',
\'posts_per_page\' => 12,
\'meta_key\' => \'sale_price\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'paged\' => $paged,
\'tax_query\' => array(
array(
\'taxonomy\' => \'statuses\',
\'terms\' => \'48\',
)
)
) );
}else if ($host == \'www.website.co.uk/status/sales/\') {
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$query = new WP_Query( array(
\'post_type\' => \'properties\',
\'posts_per_page\' => 12,
\'meta_key\' => \'sale_price\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'paged\' => $paged,
\'tax_query\' => array(
array(
\'taxonomy\' => \'statuses\',
\'terms\' => \'74\',
)
)
) );
}else{
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$query = new WP_Query( array(
\'post_type\' => \'properties\',
\'posts_per_page\' => 12,
\'meta_key\' => \'sale_price\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'paged\' => $paged,
\'tax_query\' => array(
array(
\'taxonomy\' => \'statuses\',
\'terms\' => \'52\',
)
)
) );
}
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
起初理解这个问题有点困难,但是。。。如果您只想按某个自定义字段对属性进行排序,那么就不需要创建自定义WP\\U查询和您编写的所有代码。。。
您只需使用以下命令将排序参数添加到主查询中pre_get_posts
措施:
function sort_properties_by_custom_field( $query ) {
if ( ! is_admin() && array_key_exists(\'post_type\', $query->query_vars) && \'properties\' == $query->query_vars[\'post_type\'] ) {
$query->set( \'meta_key\', \'sale_price\' );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'order\', \'DESC\' );
}
}
add_action( \'pre_get_posts\', \'sort_properties_by_custom_field\' );
它将使所有显示前端属性的循环按排序
sale_price
. 如果要仅在这些类别中以这种方式对它们进行排序,则必须将条件更改为:
if ( ! is_admin() && $query->is_main_query() && is_tax(\'statuses\') ) {