2016-05-13 3 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 Docs на параметры даты для 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 year'' должны давать те же результаты @MichaelGiovanniPumo – birgire

+0

Ahh right. ОК, круто. Тогда я приму это в качестве ответа. Спасибо за вашу помощь! –

Смежные вопросы