2016-05-13 57 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

啊,對了。好,很酷。那麼我會接受這個答案。謝謝你的幫助! –

相關問題