【问题标题】:ACF - How do I exclude posts older than a year from relationship field?ACF - 如何从关系字段中排除超过一年的帖子?
【发布时间】:2016-05-13 20:53:14
【问题描述】:

我正在使用 ACF Pro。我有一个过滤器设置,告诉 ACF 只显示已发布的帖子。

function acf_relationship_filter( $args, $field, $post_id ) {
    $args['post_status'] = array('publish');
    return $args;
}

add_filter('acf/fields/relationship/query/name=featured_items', 'acf_relationship_filter', 10, 3);

这很好用。但是,我想扩展这个功能,以便只显示去年发布的帖子;因此应该排除较旧的帖子。

有人对如何做到这一点有想法吗?

我需要以某种方式在过滤器中应用以下测试:

strtotime( $args['post_date'] ) > strtotime('-365 day');

$args['post_date'] 上比较这个结果当然是行不通的,因为我会将布尔结果与日期字符串进行比较。

谢谢!


灵魂:

我为任何可能遇到同样要求的人想出了这一点。

只需使用$args['date_query']

function acf_relationship_filter( $args, $field, $post_id ) {

    $args['post_status'] = array('publish');
    $args['date_query'] = array(
        'after' => date('Y-m-d G:i:s', strtotime('-1 year')),
        'inclusive' => true
    );

    return $args;

}

add_filter('acf/fields/relationship/query/name=featured_items', 'acf_relationship_filter', 10, 3);

这只会显示一年前从今天开始发布的帖子。

希望它可以帮助那里的人!

关于 WP_Query 日期参数的 WP 文档:http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

【问题讨论】:

    标签: php wordpress advanced-custom-fields


    【解决方案1】:

    如果这些是WP_Query 的参数,那么您可以尝试date_query 输入参数:

    $args['date_query'] = [
        [
            'after'     => '1 year ago', // <-- your strtotime string
            'inclusive' => true,
        ]
    ];
    

    在您的回调中。

    【讨论】:

    • 这使我找到了正确的答案,但并不是完全正确的工作解决方案。我会在我的问题中发布。如果你想用我发布的内容更新你的答案,我会接受这个答案,因为你在轨道上。
    • 很高兴听到您取得了一些进展,但请注意after/before 参数支持strtotime 字符串,所以我们不需要Y-m-d G:i:s 格式我认为'1 year ago''-1 year' 应该给出相同的结果@MichaelGiovanniPumo
    • 啊,对。好的酷。那么我会接受这个作为答案。感谢您的帮助!
    猜你喜欢
    • 2016-03-07
    • 2016-11-04
    • 2023-03-12
    • 2020-01-28
    • 2021-01-03
    • 2020-03-07
    • 2015-02-08
    • 2017-02-20
    • 2021-11-30
    相关资源
    最近更新 更多