我正在为当地的一个滚轴德比联赛开发一个事件系统,但它有一个问题。我制作了一个自定义的帖子类型(“event”),用户可以在其中添加一些不同类型的事件(分类法:“event type”,术语:“about”,“*fresh\\u meat\\u day*”和“*public\\u event*”)。用户还可以输入标题、描述、位置和日期,我使用自定义字段(而不是正常的发布日期)。
我在指定的事件页面(events.php)上显示这些事件,并希望在登录页上显示每个类别的第一个即将到来的事件。我对事件页面没有问题。它显示了一个很好的表格,显示了按日期排序的每个即将到来的事件(ASC)。我的问题是登录页上事件的顺序。
我正在使用此代码在登录页上显示事件:
<?php
$post_type = \'event\';
$tax = \'event-type\';
$todaysDate = date(\'d.M.y\');
$todaysString = strtotime($todaysDate);
$tax_terms = get_terms($tax, array(\'orderby\' => \'id\', \'order\' => \'ASC\'));
if ($tax_terms) {
foreach ($tax_terms as $tax_term) {
$args = array(
\'post_type\' => $post_type,
"$tax" => $tax_term->slug,
\'post_status\' => \'publish\',
\'posts_per_page\' => 1,
\'meta_key\' => \'event_date\',
\'meta_compare\' => \'=\',
\'meta_value\' => $todaysString,
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
\'caller_get_posts\' => 1
); // END $args
$my_query = null;
$my_query = new WP_Query($args);
if ($my_query->have_posts()) { ;?>
<ul>
<?php while ($my_query->have_posts()) : $my_query->the_post();
?>
<li>
<div class="togglebox_140">
<img src="<?php bloginfo("template_directory"); ?>/images/events_freshmeat.png" />
<div class="togglebox_140_content">
<div class="togglebox_140_background"> </div>
<div class="togglebox_text">
<?php echo \'<p class="togglebox_caption">Next \'.$tax_term->name.\'</p>\';?>
<p class="togglebox_text_type"><?php the_title(); ?></p>
</div>
</div>
</div>
</li>
<?php
endwhile;
} // END if have_posts loop?>
</ul>
<?php wp_reset_query();
} // END foreach $tax_terms
} // END if $tax_terms
?>
我完全没有从这段代码中得到任何输出,除非我删除它所说的行
\'meta_vale\' => $todaysString;
如果删除该行,我会看到3个即将到来的事件,它会显示事件名称,但顺序不正确(显示的事件不一定是第一个即将到来的事件,而是我添加的第一个事件)。
我完全被困在这一点上,我真的需要以正确的方式安排活动。任何帮助都将不胜感激。
干杯
SO网友:Stephen Harris
正如Kaiser所指出的meta_value => $todaysString
正在查询event_date
等于todays字符串。一、 e.今天发生的事件。
还有,从你使用strtotime
建议您按时间戳排序—您希望将时间戳解释为(并排序为)数字,而不是字符串。因此,而不是订购meta_vaue
, 您想按以下方式订购meta_value_num
. 尝试:
$args = array(
\'post_type\' => $post_type,
"$tax" => $tax_term->slug,
\'post_status\' => \'publish\',
\'posts_per_page\' => 1,
\'meta_key\' => \'event_date\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
); // END $args