Я создаю киноархив. Для каждого фильма я заполняю даты выхода для 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
). - Он не проверяет, является ли один из них пустым, и вместо этого использует опубликованную дату (он просто устанавливает значение пустых на 1 января 1970 года).