自定义帖子类型查询只返回两个帖子

时间:2011-05-07 作者:Tom Boersma

我正在为客户制作自定义活动日历:http://arbeidshesten.com/aktivitetskalender/

后端是一个自定义的post类型“Aktiviter”,带有日期(“dato”)的自定义字段和更多详细信息。

代码如下所示:

<table>

<tr>
<th>Aktivitet</th>
<th>Sted</th>
<th>Dato</th>
<th>kontaktperson</th>
</tr>


 <?php $loop = new WP_Query( array( 
\'post_type\' => \'aktiviteter\', 
\'meta_key\' => \'dato\',
\'meta_value\' => date(\'Y-m-d\'),
\'meta_compare\' => \'>=\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\'
 ) ); ?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

<?php $display_date = date(\'d.m.Y\', strtotime(get_post_meta($post->ID, "dato", true))); ?>

<tr>   
<td><?php the_title( \'<a href="\' . get_permalink() . \'" title="\' . the_title_attribute( \'echo=0\' ) . \'" rel="bookmark">\', \'</a>\' ); ?></td>
<td><?php echo get_post_meta($post->ID, "sted", true); ?></td>
<td><?php echo $display_date; ?></td>
<td><?php echo get_post_meta($post->ID, "kontaktperson", true); ?></td>
</tr>

<?php endwhile; ?>

</table>
有趣的是,尽管我输入(并发布)了大约5个未来活动,但查询只返回了2个aktivities。

有人知道线索吗?

2 个回复
最合适的回答,由SO网友:John 整理而成

我想知道是否添加\'posts_per_page\' => XXX 您的查询是否会给出所需的结果?只是一个想法。祝你好运

SO网友:tollmanz

我的猜测是,如果您运行的是WP 3.1meta_key, meta_value, 和meta_compare WP\\U查询的参数已弃用。在3.1及以上中meta_query 参数是您应该使用的。这是对WP\\u查询的一个很棒的添加,因为它允许查询多个元数据。您的查询应如下所示:

<?php 
    $loop = new WP_Query( 
        array( 
            \'post_type\' => \'aktiviteter\', 
                \'meta_query\' => array(
                    \'key\' => \'dato\',
                    \'value\' => date(\'Y-m-d\'),
                    \'compare\' => \'>=\',
                    \'type\' => \'DATE\'
                ),
            \'orderby\' => \'dato\',
            \'order\' => \'ASC\'
        ) 
    ); 
?>
资料来源:

http://codex.wordpress.org/Function_Reference/WP_Query#Custom_Field_Parameters

结束

相关推荐

如何从WP_Query()中排除内容(和其他返回值)?

是否存在可以返回站点中已发布页面的简单数组的方法?我只想返回名称和slug,而不是完整内容或其他默认值。我尝试了WP\\u query()、get\\u posts()、get\\u pages()和query\\u posts(),但它们都返回了帖子/页面内容。我只是想把帖子的名字和slug找回来。如果没有更轻的方法,我可以使用其中一种。只是想确定一下。非常感谢您的帮助。