【问题标题】:sort wp posts by custom date按自定义日期对 wp 帖子进行排序
【发布时间】:2022-10-23 17:27:18
【问题描述】:

所以我给我的每个帖子一个自定义日期字段('data_evento'),格式为:d/m/Y。

目标:对这个自定义日期的帖子进行排序。最新的在上面。

试了几种网上的方法,但我无法让它们中的任何一个真正在我的 wordpress 代码中工作(所以我没有重新发布任何内容)。

我寻求帮助,从我现在在模板中获得的默认代码开始,即:

<?php
/* Start the Loop */
while ( have_posts() ) :
    the_post();
?>
    <div class="col">
        <?php get_template_part( 'template-parts/content-home', get_post_type() ); ?>
    </div>
<?php
endwhile;
?>

提前致谢!

【问题讨论】:

  • 使用WP_Query,然后按照您的标准对其进行排序stackoverflow.com/a/39839722/3859027
  • 您的代码未使用自定义日期。我需要通过自定义日期来解决...
  • 使用您拥有的日期格式,这对于 WordPress API 来说并非易事。这是可能的,但您必须挂钩 posts_pre_query 更改数据库查询的 ORDER BY 子句。如果您可以将元数据中的日期格式更改为 yyyy-mm-dd,您将会轻松很多。
  • 我可以将日期格式更改为 yyyy-mm-dd。更准确地说,我有两个选项(使用 ACF 插件):显示格式和返回格式。我可以改变其中一个或两个。 yyyy-mm-dd 如果需要

标签: php wordpress date


【解决方案1】:

学习使用 WP_Query 并找到了 99% 的解决方案。谢谢凯文。

现在仍然无法正常工作的是:过滤掉日期小于 $today 的事件。

<?php
      $query = new WP_Query
      (array(
        'meta_key' => 'data_evento',
        'orderby' => 'meta_value_num',
        'order' => 'ASC',
        'meta_query' => array(
        array(
            'key' => 'data_evento',
            'compare' => '>=', // Upcoming Events - Greater than or equal to today
            'value' => $today,
       ),
       ),     
       ));

       while ($query->have_posts()): $query->the_post(); ?>
         // My posts 
<?php endwhile;?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2021-04-21
    相关资源
    最近更新 更多