查询 post_meta 日期而不是 post_date_gmt

Posted

技术标签:

【中文标题】查询 post_meta 日期而不是 post_date_gmt【英文标题】:Query post_meta date instead of post_date_gmt 【发布时间】:2017-09-04 05:28:24 【问题描述】:

我将查询限制为使用 6 个月前的显示帖子,效果很好。

但我需要它基于post_meta 表中的日期,而不是“post_date_gmt”。

在我的例子中,我的 meta_keys 被称为 payment_date 并且值当然是像 31-10-2016 这样的日期。

$months_ago = 6;
$args = array(
'date_query' => array(
    array(
        'column' => 'post_date_gmt',
        'after'  => $months_ago . ' months ago',
        )
    ),
'numberposts'   => -1
);

【问题讨论】:

【参考方案1】:

在这里查看:https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

如果您滚动示例,您会看到:

显示自定义字段键为设定日期且自定义字段值为现在的帖子。仅显示日期未过的帖子。

$args = array(
    'post_type'    => 'event',
    'meta_key'     => 'event_date',
    'meta_value'   => date( "Ymd" ), // change to how "event date" is stored
    'meta_compare' => '>',
);
$query = new WP_Query( $args );

在你的情况下,你可以这样写:date( "dmY", strtotime( '6 months ago' ) )

【讨论】:

【参考方案2】:

试试这个代码:

$sixmonthagodate = date( "d-m-Y", strtotime('-6 Months') );

$args = array(
    'post_type'    => 'post',
    'posts_per_page' => -1,
    'meta_key'     => 'payment_date',
    'meta_value'   => $sixmonthagodate,
    'meta_compare' => '>',
);
$query = new WP_Query( $args );

检查您的 post_type 在您的 WordPress 网站中是否为真。

【讨论】:

【参考方案3】:

首先date_querypost_date_gmt 上工作。如果你想 要从元字段查询帖子,则必须使用meta_query

这是一个示例代码:

$months_ago = 6;
$args = [
    //...
    //...
    'posts_per_page' => -1, // Unlimited posts
    //...
    //...
    'meta_query' => [
        'relation' => 'AND',
        [
            'key' => 'payment_date',
            'value' => date('d-m-Y', strtotime($months_ago . ' months ago')), //<-- Converting date into your custom date format
            'compare' => '>', //you can also use <=, >=, <, etc..
            'type' => 'DATE'
        ],
    ]
];

$query = new WP_Query($args);

if ($query->have_posts()) :
    /* Start the Loop */
    while ($query->have_posts()) : $query->the_post();

    //you post

    endwhile;
endif;

上面的代码应该适合你。

相关问题:

Hide past events posts based on custom date field Orderby ACF custom field date don't work

希望这会有所帮助!

【讨论】:

以上是关于查询 post_meta 日期而不是 post_date_gmt的主要内容,如果未能解决你的问题,请参考以下文章

Mysql SELECT自定义字段(post_meta)用于自定义帖子类型

根据 2 个键更新 post_meta 值 - Wordpress

VBA查询插入时间而不是日期

使用 Hive 日期函数而不是硬编码日期字符串时,Hive 查询性能很慢?

使用 current_date::date 而不是硬编码日期的 Postgres 查询非常慢

如何以正确的顺序链接查询集,而不是按日期排序,按foreignKey排序?