我正在为客户制作自定义活动日历: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。
有人知道线索吗?
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