我正在制作一个事件侧边栏部分,仅显示接下来的 3 个事件。我已经让自定义帖子类型和自定义字段全部正常工作,但我似乎可以弄清楚如何按事件的开始日期(这是自定义字段值)对帖子进行排序。有没有一个php函数可以比较日期并将它们组织成一定的顺序。我认为它还必须保存带有新安排的日期的帖子 ID,以便当我阅读这些值时,我可以显示带有该日期的适当帖子。
有没有人给我指明方向?
我认为这就是我需要做的:
- 通读帖子并获取日期
- 使用与这些日期关联的帖子 ID 对日期进行排序
- 通读已排序的日期并按帖子 ID 重新显示前 3 个帖子
不过,我不知道如何编写代码......这就是我到目前为止所拥有的。此代码仅按 WordPress 中的发布日期显示它们。
<?php query_posts('post_type=events');
if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php $dateStart = get_post_meta($post->ID, 'date-start', true);?>
<div class="date"><?php echo $dateStart; ?></div>
<?php endwhile; endif; wp_reset_query(); ?>
我相信我能够回答我自己的问题。 Wordpress 有一个内置功能可以比较帖子之间的自定义字段值。要比较日期(这是我的自定义字段值),它们必须采用“yyyymmdd”格式才能轻松进行比较。
我真的很惊讶我不需要进行多个循环并存储 post-id 或任何东西。无论如何,我希望这对其他人有帮助。 :]
<?php
$args = array(
'post_type' => 'events',
'posts_per_page' => 3, //limited myself to 3 posts
'meta_key' => 'date-start', //name of custom field
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
query_posts($args);
if (have_posts()) : while (have_posts()) : the_post(); ?>
//Insert code here...
//Test to see if it is sorting the posts (below)
<?php $dateStart = get_post_meta($post->ID, 'date-start', true); echo $dateStart;?>
<?php endwhile; endif; wp_reset_query(); ?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)