每个帖子都有一个发布日期和“资源字段”,其中我有另一个日期字段(与发布日期不同)。有人能告诉我如何才能访问...资源字段日期?我有帖子,我需要按“资源字段” - >每个类别的日期desc对它们进行排序。
这是查询但不起作用......
<?php $terms = get_terms( 'resources-categories', array('hide_empty' => false)); ?>
<?php foreach( $terms as $term ): ?>
<ul>
<?php
$query = new WP_Query( array(
'post_type' => 'resources',
'resources-categories' => $term->slug,
'posts_per_page' => '-1',
'meta_key' => 'date',
'meta_value' => date('F Y'),
'meta_compare' => '>',
'orderby' => 'meta_key',
'order' => 'DESC',
'post_parent' => 0)
);
if ($query->have_posts()) : $count = 0;
while($query->have_posts()) :
$query->the_post(); ?>
<li>
//print code...
</li>
<?php endwhile; endif; ?>
答案 0 :(得分:2)
我倾向于使用$args
数组的meta_query
属性获得更好的运气。以下是使用此属性重新构建的示例:
$today = date('Y-m-d');
$args = array(
'post_type' => 'resources',
'posts_per_page' => '-1',
'meta_key' => 'date',
'meta_query' => array(
array(
'key' => 'date',
'value' => $today,
'type' => 'date',
'compare' => '>'
)
),
'orderby' => 'meta_value_num',
'order' => 'DESC',
'post_parent' => 0
);
几点说明:
请注意,我更改了您的日期格式。您的原始格式将使用月份的文本表示。 WordPress无法“比较”该值,因为它表示为字符串。我假设您的日期以yyyy-mm-dd
的标准SQL格式存储。但这可能是一个重要的障碍。您只需要确定您可以知道日期的实际格式(因为它存储在数据库中),然后在$today
变量中匹配该格式。
请注意,我已包含meta_key
值。它看起来多余,但事实并非如此。分拣工作需要它。
最后,您添加了一个名为'resources-categories' => $term->slug
的属性,但这不会对查询产生任何影响。 (所以我删除了它)。如果您需要针对分类法进行额外查询,则需要查看$args
数组的tax_query
属性。
希望这有点帮助,玩得开心!