2

每个帖子都有一个发布日期和“资源字段”,其中我有另一个带有日期的字段(与发布日期不同)。有人可以告诉我如何访问...资源字段日期吗?我有帖子,我需要按每个类别的“资源字段”->日期描述对它们进行排序。

这是查询,但不起作用...

<?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; ?>
4

1 回答 1

2

使用数组的meta_query属性我往往会有更好的运气。$args这是使用此属性重组的示例:

$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 将无法“比较”该值,因为它表示为字符串。我假设您的日期以标准 SQL 格式存储yyyy-mm-dd。但这对您来说可能是一个重大障碍。您只需要确保您可以知道日期的实际格式是什么(因为它存储在数据库中),然后在$today变量中匹配该格式。

  • 请注意,我已包含该meta_key值。它看起来是多余的,但事实并非如此。它是排序工作所必需的。

  • 最后,您包含了一个名为 的属性'resources-categories' => $term->slug,但这不会对查询产生任何影响。(所以我删除了它)。如果您需要额外查询分类,您需要查看数组的tax_query属性。$args

希望这会有所帮助,玩得开心!

于 2013-05-17T22:42:31.747 回答