【问题标题】:Only show posts from current year based on meta_key - Wordpress仅根据 meta_key 显示当年的帖子 - Wordpress
【发布时间】:2016-06-22 14:34:22
【问题描述】:

我关注wp_query。此查询根据 ACF(高级自定义字段)日期字段过滤自定义帖子类型。此查询显示自定义字段中提供的日期等于当前年份或未来日期的所有帖子。

<?php
  $current_year = date('Y');


  $args = array(
    'post_type' => 'result',
    'meta_key'  => 'date_field',
    'meta_query' => array(
        array(
           'key'        => 'date_field',
           'compare'    => '>=',
           'value'      => $current_year,
                                    )),
             );
            $the_query = new WP_Query( $args ); ?>
...

我喜欢做的是只显示当年的帖子。在上面的查询中仍然显示未来几年。

我尝试删除比较值或将其更改为 '==' 。但随后没有显示任何帖子。我认为原因是'date_field' 中的值以('Ymd') 格式存储。

我查看了ACF documentation 并找到了一种从日期字段中提取年份的方法,如下所示:

$date = get_field('date_field', false, false);
$date = new DateTime($date);
$date->format('Y');

但我不确定如何在查询中实现该值。我尝试将键值更改为$date,但没有显示任何帖子。

【问题讨论】:

  • 您能在创建日期时间之前打印get_field('date_field') 的值吗?运营商也应该是'='
  • 是的,我可以打印字段的值,那部分没问题,我只是不知道我可以在我的查询中实现它。
  • 你能告诉我这个字段的值是什么吗?
  • string(10) "01/06/2016" 这是循环内的值。在循环之前我显然无法获得价值

标签: php wordpress advanced-custom-fields


【解决方案1】:

ACF 将日期保存为‘YYYYMMDD’

$args = [
    'post_type'    => 'result',
    'meta_key'     => 'date_field',
    'meta_value'   => date( "Ymd" ),
    'meta_compare' => '>=',
];
$query = new WP_Query( $args );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多