2016-05-13 30 views
0

我正在使用ACF Pro。我有一个过滤器设置,告诉ACF只显示发布的帖子。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文件的日期参数WP_Query:http://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

回答

1

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

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

+0

这导致我找到了答案的正确路径,但并不完全是确切的工作解决方案。我会在我的问题中发布。如果您想以我发布的内容更新您的答案,我会接受答案,因为您已经走上正轨。 –

+0

很高兴听到你有所进步,但请注意'after' /'before'参数支持'strtotime'字符串,所以我们不应该需要'Ymd G:i:s'格式,我想''1年前''和''-1年''应该给出相同的结果@MichaelGiovanniPumo – birgire

+0

啊,对了。好,很酷。那么我会接受这个答案。谢谢你的帮助! –

相关问题