Intereting Posts
Виджеты не отображаются на боковых панелях Как добавить пользовательские классы в таблицы списка столбцов администратора или столбцы? Будни как условия – Как заказать таксономические условия по ID в панели администратора? the_content не работает на одном из двух сайтов Multisite Как изменить фоновое изображение из WordPress Gallery Медиа-библиотека не загружается после переключения основного сайта многопользовательской WordPress встроен в диалоговое окно для моего плагина Создание мобильного навигационного заголовка с интеграцией настроек Шаблоны пользовательских страниц Когда WordPress завершает встроенные скрипты в CDATA? Настроить поток активности – Buddypress Получить количество сообщений из результатов текущей страницы Параметры цвета из API пользовательского интерфейса темы не возвращаются через get_theme_mod () WordPress, читающий старую версию functions.php, разбивает сайт setup_postdata не возвращает никаких значений

Меню фильтра сообщений WordPress

Привет, Я пытаюсь создать форму, которая фильтрует мои сообщения по трем требованиям, категориям, автору и дате. Пользователь должен иметь возможность выбрать требование из каждого раскрывающегося списка (или оставить пустым для всех) и получить outcoem на основе этого, чтобы, например, иметь возможность выбирать HMTL (из категорий), Joe Bloggs (от автора) и февраля 2017 года ( с даты) и получить страницу, на которой отображаются все сообщения в HTMl, написанные Joe Bloggs, опубликованные в феврале 2017 года.

До сих пор у меня есть некоторые функции и форма, которые при выборе категории и автора (без даты), похоже, работают и направляют меня в news / category / news /? User = 1 & date-dd & submit = filter, который показывает, что я хочу.

Однако дата начинается с проблем. Если я выбираю ту же категорию и автора, что и предыдущий, но затем выбираю январь 2017, я получаю URL- новости / категорию / новости /? User = 1 & date-dd = http% 3A% 2F% 2Flocalhost% 2Fbrandbiology% 2Fnews% 2F2017% 2F01% 2F & submit = фильтр, который теперь не работает, он покажет категорию и автора, но не дату и странный URL.

Secondaly, если я просто поставлю <?php wp_get_archives( $args ); ?> <?php wp_get_archives( $args ); ?> на моей странице, он отобразит список дат в <li> (не то, что я хочу, но я сделал это для тестирования), и нажмите «Январь 2017», чтобы он привел меня к новостям / 2017/01 /, которые будут отображаться только в январе (не работает с новостями категории / категория / блог / 2017/01 / – показывает 404).

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

Заранее спасибо

Вот мои функции:

 function get_cat_droplist(){ $args = array( 'show_option_all' => 'All Categories', 'show_option_none' => '', 'option_none_value' => '-1', 'orderby' => 'ID', 'order' => 'ASC', 'show_count' => 1, 'hide_empty' => 1, 'child_of' => 0, 'exclude' => '', 'include' => '', 'echo' => 1, 'selected' => 0, 'hierarchical' => 0, 'name' => 'cat', 'id' => '', 'class' => 'postform', 'depth' => 0, 'tab_index' => 0, 'taxonomy' => 'category', 'hide_if_empty' => true, 'value_field' => 'term_id', ); $output = wp_dropdown_categories( $args ); } function get_author_droplist(){ $args = array( 'show_option_all' => 'All Author', // string 'show_option_none' => null, // string 'hide_if_only_one_author' => true, // string 'orderby' => 'display_name', 'order' => 'ASC', 'include' => null, // string 'exclude' => null, // string 'multi' => false, 'show' => 'display_name', 'echo' => true, 'selected' => false, 'include_selected' => false, 'name' => 'user', // string 'id' => null, // integer 'class' => null, // string 'blog_id' => $GLOBALS['blog_id'], 'who' => null // string ); $output = wp_dropdown_users( $args ); } function get_date_droplist(){ $args = array( 'type' => 'monthly', 'limit' => '', 'format' => 'option', 'before' => '', 'after' => '', 'show_post_count' => true, 'echo' => 0, 'order' => 'DESC', 'post_type' => 'post' ); $output = wp_get_archives( $args ); } 

и мой HTML / PHP

  <form action="<?php bloginfo('url'); ?>" method="get"> <div> <span class="cat-list-header text-color-1">Filter posts:</span> <?php $select = get_cat_droplist(); echo $select; ?> <?php $select = get_author_droplist(); echo $select; ?> <select name="date-dd"> <option value=""><?php echo esc_attr( __( 'Select Month' ) ); ?></option> <?php wp_get_archives( array( 'type' => 'monthly', 'format' => 'option', 'show_post_count' => 1 ) ); ?> </select> <input type="submit" name="submit" value="filter" /> <!--CHANGE VALUE TO YOUR LIKING!--> </div> </form> 

Solutions Collecting From Web of "Меню фильтра сообщений WordPress"

1- Чтобы получить список авторов, вы можете использовать:

<?php wp_list_authors( ); ?>

Это вернет список авторов и ссылку на их учетные записи и сообщения. Чтобы настроить его, используя нужные аргументы, взгляните на Codex

2- Чтобы получить категории, используйте:

<?php wp_list_categories(); ?>

Эта функция вернет список всех категорий в виде списка HTML. Вы можете настроить это тоже здесь .

3- Наконец, чтобы отфильтровать сообщения по дате, вы можете использовать метод, предложенный в указанной вами ссылке, используя:

<?php wp_get_archives(); ?> <?php wp_get_archives(); ?> и установка аргументов ежемесячно или ежегодно. Гид объяснил это довольно хорошо.

Примечание. Для создания выпадающего меню вам не нужно использовать селектор <options> . Эти функции вернут свои результаты в виде списка HTML, поэтому вы можете создать его так же, как выпадающее меню. Подробное руководство по раскрытию CSS можно найти здесь .

Скажите мне, если вам нужно больше информации об этом.