问题描述
我正在使用自定义分类术语页面模板,其中我们希望连接到按出版日期 (自定义日期字段) 排序的术语的项目 – 如果同一天有多个项目 (格式如 YYYY-MM-DD),则按标题排序,如果自定义字段尚未填写 (较旧的项目),最后按标题排序。
所以,我用 WP_query 尝试了一百种不同的方式,它确实会返回大部分结果,因为我想要它们 – 但是在这种情况下,它只返回具有 publication_date 的 meta_key 的项目。所有其他项目都被忽略,不显示。我使用”or” 的关系尝试了一个 meta_query,并将 publication_date 作为 EXISTS 和 NOT EXISTS 进行比较,但是对我来说返回了 0 个结果。
此外,该站点运行 3.5.2 仍然,他们不想升级。
这是我最近的一个查询,让我看到以正确顺序显示 publication_date 自定义字段的帖子:
$term = get_queried_object(); // find the term of the taxonomy page we are on
$wp_query = new WP_Query( array(
'post_type' => 'resource',
'tax_query' => array(
array(
'taxonomy' => 'resource_types',
'field' => 'slug',
'terms' => $term->name,
)),
'meta_key' => 'publication_date',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'paged' => $paged,
'posts_per_page' => '10',
));
我也尝试使用 wpdb 并运行 SQL 查询,但我真的不知道如何完成我想要做的。如果有人可以帮助我,那真是太棒了!
提前致谢。
最佳解决方案
感谢大家的帮助!
最后,下面的查询给了我所期望的结果 – 这是为了显示和排序”publication_date” 的自定义字段的职位,按日期排序,如果有多个相同的日期 (例如,标记为 2013 年 6 月的 4 个),它会按标题排序。然后,在通过所有发布日期填写完毕的帖子之后,它将再次按照标题按字母顺序循环遍历剩余的帖子。
这让我在同一查询中设置结果,并保持我的分页:
$term = get_queried_object();
the_post();
$wp_query = new WP_Query( array(
'post_type' => 'resource',
'tax_query' => array(
array(
'taxonomy' => 'resource_types',
'field' => 'slug',
'terms' => $term->name,
)),
'meta_query' => array(
'relation' => 'OR',
array( //check to see if date has been filled out
'key' => 'publication_date',
'compare' => '=',
'value' => date('Y-m-d')
),
array( //if no date has been added show these posts too
'key' => 'publication_date',
'value' => date('Y-m-d'),
'compare' => 'NOT EXISTS'
)
),
'meta_key' => 'publication_date',
'orderby' => 'meta_value title',
'order' => 'ASC',
'paged' => $paged,
'posts_per_page' => '10',
));
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。