Как написать правильно фильтр рубрик?
<? if ($_GET['post_author'] != 0) { // если передана фильтрация по разделу $args['meta_query'][] = array( // пишем условия в meta_query 'key' => 'author', // название произвольного поля 'value' => $_POST['author'], // переданное значение произвольного поля ); } if ($_GET['category_name'] != 0) { // если передана фильтрация по разделу $args['meta_query'][] = array( // пишем условия в meta_query 'key' => 'category__and', // название произвольного поля 'value' => $_POST['category__and'], // переданное значение произвольного поля 'type' => 'text', ); } ?> <div <?php tie_content_column_attr(); ?>> <form class="filter" action="" method="post"><!-- action пустой, чтобы ссылалось на текущую страницу --> <label>Раздел: <select name="post_author"> <!-- Раздел - селектлист --> <option value="">Выберите автора</option> <?php $users = get_users(); foreach($users as $user) { echo "<option ".($user->ID==$post_author?"selected ":"")."value=\"".$user->ID."\">".$user->display_name."</option>"; } ?> </select> <select name="category_name"> <!-- Раздел - селектлист --> <option value="">Выберите категорию</option> <?php $categories = get_categories(); foreach($categories as $category) { echo "<option ".($category->term_id==$category_name?"selected ":"")."value=\"".$category->term_id."\">".$category->name."</option>"; } ?> </select> </label> <button type="submit">применить фильтр</button> </form> <?php $args = array( 'post_type' => 'post' ); $query = new WP_Query( $args ); if ( $query->have_posts() ) : // Get the layout template part TIELABS_HELPER::get_template_part( 'templates/archives2', '', array( 'layout' => tie_get_option( 'blog_display', 'excerpt' ), 'excerpt_length' => tie_get_option( 'blog_excerpt_length' ), 'my_query' => $query )); // Page navigation TIELABS_PAGINATION::show( array( 'type' => tie_get_option( 'blog_pagination' ) ) ); else: TIELABS_HELPER::get_template_part( 'templates/not-found' ); endif; ?> </div><!-- .main-content /--> <?php
я написал вот так, ну что то у меня не фильтрует... (я только учусь)
Может я не понял задумку, но вот ты собираешь в начале кода $args. А потом под конец берешь и перезатираешь её на
$args = array( 'post_type' => 'post' );
Может её надо дополнить, а не перезатереть?
наверное, я просто нормального урока по фильтрам не нашел, поэтому не могу понять как обработчик PHP составить для этой формы
<form class="filter" action="" method="post"><!-- action пустой, чтобы ссылалось на текущую страницу --> <label>Раздел: <select name="post_author"> <!-- Раздел - селектлист --> <option value="">Выберите автора</option> <?php $users = get_users(); foreach($users as $user) { echo "<option ".($user->ID==$post_author?"selected ":"")."value=\"".$user->ID."\">".$user->display_name."</option>"; } ?> </select> <select name="category_name"> <!-- Раздел - селектлист --> <option value="">Выберите категорию</option> <?php $categories = get_categories(); foreach($categories as $category) { echo "<option ".($category->term_id==$category_name?"selected ":"")."value=\"".$category->term_id."\">".$category->name."</option>"; } ?> </select> </label> <button type="submit">применить фильтр</button> </form>
сможете помочь составить обработчик?
Пару наводок:
Во-первых, форме Вы указали метод "POST".
В обработчике проверяете, существует ли параметр GET и делаете запрос с параметром POST.
У вас условие не проходит:
замените на:
И код обработчика нужно поместить после:
Иначе - массив просто переписывается.