按一个自定义字段对 WordPress 帖子进行排序,同时排除所有具有另一个值的内容


Sort Wordpress Posts by One Custom Field , while excluding all with another value

我的WordPress帖子有两个自定义字段"episode_number"season_number"

我想选择所有season_number=5(示例)的帖子,并按episode_number DESC 对它们进行排序

我已经写过这个

            $max_season=5;
            $args = array(
            'meta_key' => 'season_number',
            'meta_compare' =>'==',
            'meta_value' => $max_season,
            'orderby' => 'episode_number',
            'order' => 'DESC',
        );
$wp_query = new WP_Query($args);

基于season_number作品的选择,但我无法对它们进行排序,使用此代码wordpress根据发布时间对它们进行排序

有人可以帮助我吗?

我相信WordPress只会查询您请求的指定元数据,即key=season_numbervalue=5(季节编号)。它不会查询键episode_number的帖子元数据,因此您无法直接在SQL查询中按该字段进行排序。

您要么需要循环查询结果并获取每个项目的元数据以供key=episode_number并相应地填充新的排序数组,要么需要找出一种方法在单个查询中也查询此元数据。

对于第二个,我不知道这将如何工作。

我原来的答案不合时宜,我误读了问题

尝试这样的事情:

$max_season=5;
$args = array(
    'meta_key' => 'episode_number',
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
    'meta_query' => array(
        array(
        'key' => 'season_number',
        'value' => array($max_season),
        'compare' => 'IN',
        )
   )
);
$wp_query = new WP_Query($args);