我正在建立一个电影档案馆。对于我正在填写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日)我想为
if (is_post_type_archive(\'project\') )
然后它应该检查3个meta\\u键release_f
, release_uk
和release_us
对于值,如果有,请选择最早的日期;如果没有值,请选择帖子的日期,然后orderby
此数组的结果。这可能吗?