我有以下代码,这是工作正常,并根据自定义字段分配给每个职位使用ACF插件排序后。这里是用于此目的的代码
function my_pre_get_posts( $query ) {
// only modify queries for 'event' post type
if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'post' ) {
$query->set('order', 'ASC');
$query->set('orderby', 'meta_value');
$query->set('meta_key', 'active_inactive');
}
// return
return $query;
}
add_action('pre_get_posts', 'my_pre_get_posts');
我有一个使用ACF创建的自定义字段,称为active_inactive,它有2个值,每个职位,活动和非活动。
第一个要求工作正常,其中所有活动的职位显示在列表中的第一位,然后是非活动的职位,但是,日期没有被正确排序,并在活动的职位,所有非活动的职位排序从旧的日期第一次到结束日期在最后。
因此,我需要固定的日期,以及,所以正确的后,活跃的职位名单结束和不活跃的职位点燃开始,所有这些不活跃的职位应开始从最新的日期到最早的日期。
任何帮助都将不胜感激。
3条答案
按热度按时间bq3bfh9z1#
尝试类似的操作,但由于post_date,没有返回任何结果
mkh04yzy2#
您可以使用meta_query参数添加另一个 meta_key参数,以便在活动帖子之后按日期降序对非活动帖子进行排序。
可以使用 meta_query参数指定多个排序条件,并将meta_query参数设置为数组的数组,每个数组包含meta_key、meta_value和order参数。
我又向 meta_query参数添加了三个数组:第一个数组检查日期字段是否存在,并且小于或等于今天的日期,这将排除未来的事件。第二个数组检查帖子的active_inactive值是否等于inactive。第三个数组按日期降序排序非活动帖子。此外,我还添加了一个关系参数设置为OR,以便两个条件都能满足。
ohfgkhjo3#