WPQuery循环未提供预期输出

时间:2018-06-25 作者:reigns1989

我试图获得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\',
            )
        )
    ) );    
}

1 个回复
最合适的回答,由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\') ) {

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post