在查询中先显示最近的产品,但最后显示已售罄

时间:2016-02-29 作者:Mika Kaltoft

我正在使用WooCommerce,希望在存档页面上显示查询中最后一个“缺货”的产品。我该怎么做?

目前,我们正在通过以下自定义查询首先进行最新产品展示:

add_action( \'pre_get_posts\', \'mik_exclude_category\' );
function mik_exclude_category( $query ) {
    if ( $query->is_main_query() ) {
        $query->set( \'orderby\', \'date\' );
        $query->set( \'order\', \'DESC\' );
    }
}
所以,我们想两者兼而有之。首先展示最新的产品,但无论“缺货”产品有多新,最后都要展示。

真的,米卡

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

如果我们只有两种库存状态,即outofstockinstock, 我们可以很容易地通过pre_get_posts

add_action( \'pre_get_posts\', function ( $q ) {
    if (   !is_admin()                 // Target only front end 
         && $q->is_main_query()        // Only target the main query
         && $q->is_post_type_archive() // Change to suite your needs
    ) {
        $q->set( \'meta_key\', \'_stock_status\' );
        $q->set( \'orderby\',  \'meta_value\'    );
        $q->set( \'order\',    \'ASC\'           );
    }
}, PHP_INT_MAX );
你应该根据自己的需要进行调整

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the