我正在构建一个电影档案。对于我正在填写的每部电影的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日)
检查是否存在先将$mykey_values放入条件中的值http://codex.wordpress.org/Function_Reference/get_post_custom_values
$mykey_values = get_post_custom_values('additional_date');