我正在建立一个电影档案。对于每部电影,我都填写了 3 个国家/地区的上映日期,它们存储为自定义字段(通过 Pods 添加)
现在,在列出电影时,我想构建一个数组并循环遍历每个帖子以检查字段是否有值,然后比较值并按第一个日期(最旧或最近的日期)排序。如果所有字段都没有值,则应使用发布日期进行排序。我正在将此代码用于类似的事情
function orderby_additionaldate($query) {
if (! is_admin() && $query->is_main_query() && is_category( array( 2,57,530 ) ) || cat_is_ancestor_of(2, get_query_var('cat') ) && $query->is_main_query() && ! is_admin() || cat_is_ancestor_of(57, get_query_var('cat') ) && $query->is_main_query() && ! is_admin() || cat_is_ancestor_of(530, get_query_var('cat') ) && $query->is_main_query() && ! is_admin() ) {
if ( $query->query_vars ) {
$query->set( 'order', 'DESC' );
$query->set( 'meta_key', 'additional_date' );
$query->set( 'orderby', 'meta_value' );
}
}
}
add_action( 'pre_get_posts', 'orderby_additionaldate' );
这里缺少两件事:
- 它不比较 3 个元键值(
release_f
、release_uk
和release_us
)。 - 它不检查其中一个是否为空,而是使用发布的日期(它只是将空的值设置为 1970 年 1 月 1 日)。