Как фильтровать контент? - PullRequest
       13

Как фильтровать контент?

0 голосов
/ 26 апреля 2018

Я настраиваю страницу свойств с расширенными настраиваемыми полями и настраиваемыми типами записей.Мне нужно иметь возможность фильтровать свойства по количеству спален, цене, расположению и т. Д. Мне удалось отфильтровать свойства по количеству спален, но я не могу понять, как применять два фильтра одновременно.Например, я создал поле acf с именем test, и оно имеет значения;один, два и три.Теперь я хочу отобразить свойство, которое имеет 5 спален и тестовое значение три.Как я могу изменить свой код, чтобы сделать это?

$GLOBALS['my_query_filters'] = array( 
'field_1'   => 'bedrooms', 
'field_2'   => 'test',
);

add_action('pre_get_posts', 'my_pre_get_posts');

function my_pre_get_posts( $query ){
// bail early if is in admin
if( is_admin() ){
    return;
} 

// get meta query
$meta_query = $query->get('meta_query');

foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
    if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'property' ) {
        if( isset($_GET[ $name ]) ){
            $value = explode(',', $_GET[ $name ]);

            $meta_query[] = array(
                'key'        => $name,
                'value'      => $value,
                'compare'    => 'IN',
            );
        }
    }
}

// update meta query
$query->set('meta_query', $meta_query);

return;
}

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете напрямую выполнить этот запрос в своих файлах шаблонов, где вы хотите отобразить свои собственные сообщения. Вы также можете добавить больше полей после отношения И в переменной по умолчанию.

<?php 

$defaults = array(
    'numberposts' => -1,
    'category' => 0, 'orderby' => 'date',
    'order' => 'DESC', 'include' => array(),
    'exclude' => array(),'post_type' => 'your_custom_post_type',
    'meta_key','meta_value',
    'meta_query' => array(
    'relation' => 'AND',
    array(
    'key'     => 'custom_field_name1',
    'value'   => $custom_field_value1,
    ),
    array(
    'key'     => 'custom_field_name2',
    'value'   => $custom_field_name2,
    )
));

$query = get_posts($defaults);
?>
...