ACF - 如何从关系字段中排除超过一年的帖子?

时间:2016-05-13 10:42:13

标签: php wordpress advanced-custom-fields

我正在使用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']上的结果当然不会工作,因为我将布尔结果与日期字符串进行比较。

谢谢!

SOULTION:

我认为任何可能遇到同样要求的人都会这样做。

只需使用$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 Docs日期参数:http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

1 个答案:

答案 0 :(得分:1)

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

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