spot_img
HomeWordPress教程wordpress建站公司 WP_Query 按一个自定义字段排序,然后在一个查询中按另一个自定义字段排序

wordpress建站公司 WP_Query 按一个自定义字段排序,然后在一个查询中按另一个自定义字段排序

JasperAI 10000字免费额度试用

我希望我能正确解释它,所以我们开始吧!

我有一个房产列表页面,应该在发布列表的日期之前排序(数据来自 API,所以它不是 WP 发布日期),然后任何已售出的房产都应该排在列表的最后,按它们与最近售出的商品在该子列表中排在第一位。 第一个自定义字段称为 listing_date,另一个称为 agreed_date。

有谁知道这种排序是否可行? 我在想我可能需要使用 2 个查询,但这意味着我无法在该解决方案中使用分页。 这是我最近失败的尝试。

        <?php

       $args = array(
        'post_type' => 'listing',
        'posts_per_page' => 10,
        'paged' => $paged,
        'tax_query' => array(
            array(
                'taxonomy' => 'listingcategory',
                'field'    => 'slug',
                'terms'    => 'commercial',
            ),
        ),
        'orderby' => array(
            'agreed_date' => 'ASC',
            'listing_date' => 'DESC'
        ),      
       );
       $listing_posts = new WP_Query($args);

谢谢!

更新代码:

   $args = array(
    'post_type' => 'listing',
    'posts_per_page' => 10,
        'paged' => $paged,
        'tax_query' => array(
            array(
                'taxonomy' => 'listingcategory',
                'field'    => 'slug',
                'terms'    => 'commercial',
            ),
        'meta_query' => array(
            'relation' => 'AND',
            'listing_date_clause' => array(
                'key' => 'listing_date',
                'compare' => 'EXISTS',
            ),
            'agreed_date_clause' => array(
                'key' => 'agreed_date',
                'compare' => 'EXISTS',
            ), 
        ),
            ),
            'orderby' => array(
                'listing_date_clause' => 'DESC',
                'agreed_date_clause' => 'DESC'
            ),      
       );

根据 https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters 你想指定它类似于下面的代码示例:

$args = array(  
     'orderby' => array( 
        'title' => 'DESC', 
        'menu_order' => 'ASC' 
    ) 
); 
$query = new WP_Query( $args );

这是从 WordPress 4.0 开始支持的。

对于自定义字段(post meta),您需要添加元查询,详见 https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-和元查询

例如:

高质量外链购买
$q = new WP_Query( array(
'meta_query' => array(
    'relation' => 'AND',
    'state_clause' => array(
        'key' => 'state',
        'value' => 'Wisconsin',
    ),
    'city_clause' => array(
        'key' => 'city',
        'compare' => 'EXISTS',
    ), 
),
'orderby' => 'city_clause',
) );

这是从 4.​​2 开始支持的。

在你的情况下(根据你的问题编辑)我认为你需要:

$args = array(
    'post_type' => 'listing',
    'posts_per_page' => 10,
    'paged' => $paged,
    'tax_query' => array(
        array(
            'taxonomy' => 'listingcategory',
            'field'    => 'slug',
            'terms'    => 'commercial',
        )
    ),
    'meta_query' => array(
        'relation' => 'AND',
        'listing_date_clause' => array(
            'key' => 'listing_date',
            'compare' => 'EXISTS',
        ),
        'agreed_date_clause' => array(
            'key' => 'agreed_date',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array(
        'listing_date_clause' => 'DESC',
        'agreed_date_clause' => 'DESC'
    ),      
);

5分钟生成10篇英文软文article forge软件试用
siteground guangda
WordPress花园官方账号
WordPress花园隶致力于为广大跨境电商和独立站爱好者提供优质的WordPress教程、Woocommerce教程、Facebook、Twitter、tiktok、Instagram教程和谷歌SEO教程等资料和对应的建站推广服务。关注‘哟派出海’公众号了解最新资讯。粉丝福利:Shopline免费独立站建设14天优惠 商务合作: [email protected]
RELATED ARTICLES
spot_img