【问题标题】:How to order wordpress posts by a custom field date?如何按自定义字段日期排序 wordpress 帖子?
【发布时间】:2013-05-29 03:49:24
【问题描述】:

我正在制作一个仅显示接下来 3 个事件的事件侧边栏部分。我已经让自定义帖子类型和自定义字段都正常工作,但我似乎可以弄清楚如何按事件的开始日期对帖子进行排序,这是一个自定义字段值。是否有一个 php 函数可以比较日期并将它们组织成一定的顺序。我认为它还必须使用新安排的日期保存 post-id,以便当我阅读这些值时,我可以显示具有该日期的适当帖子。

有没有人有特定的方向来引导我?

我认为这是我需要做的:

  1. 阅读帖子并获取日期
  2. 使用与这些日期关联的 post-id 对日期进行排序
  3. 阅读排序后的日期并重新显示按 post-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();  ?>

【问题讨论】:

  • 我想我会将 $dateStart 变成一个数组并以这种方式存储日期?我想我可能也应该抓住那些日期的帖子ID。

标签: php javascript html css wordpress


【解决方案1】:

我相信我能够回答我自己的问题。 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();  ?>

【讨论】:

  • 如果有人需要帮助来理解这一点,请告诉我:]
  • 现在可以直接使用'orderby' =&gt; 'date-start'。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多