Сортировка статей WP_Query
Здравствуйте, подскажите, как настроить сортировку, при передаче сразу нескольких, меток и рубрик одновременно.
Вот мой вариант, к сожалению, он почему то не поддерживает передачу параметров массивом
global $wp_query; $foo = $wp_query; $args = array( 'paged' => $paged, 'posts_per_page' => 10 ); $args[] = array('relation' => 'AND'); if ($_GET['razdel'] != '' || $_GET['tag_genre'] != '' ) { $args = array( 'category_name' => $_GET['razdel'], 'tag' => $_GET['tag_genre'], 'paged' => $paged, 'posts_per_page' => 10 ); }
Параметры передаю вот таким образом
<select data-placeholder="Выберите жанр" class="chosen-select" multiple name='tag_genre[]'> <option value="">Все жанры</option> <option selected value="detektiv">Детективы</option> <option value="voennyj">Военные</option> </select>
Ну и на всякий случай выведу полностью весь код, поскольку есть еще сортировка по таксономии
global $wp_query; $foo = $wp_query; $args = array( 'paged' => $paged, 'posts_per_page' => 10 ); $args[] = array('relation' => 'AND'); if ($_GET['razdel'] != '' || $_GET['tag_genre'] != '' ) { $args = array( 'category_name' => $_GET['razdel'], 'tag' => $_GET['tag_genre'], 'paged' => $paged, 'posts_per_page' => 10 ); } if (!empty($_GET['tax_strana'])) { $args['tax_query'][] = array( 'taxonomy' => 'strana', 'field' => 'slug', 'terms' => $_GET['tax_strana'], );} if (!empty($_GET['tax_god'])) { $args['tax_query'][] = array( 'taxonomy' => 'god', 'field' => 'slug', 'terms' => $_GET['tax_god'], );} $my_post = new WP_Query( $args );
Вот простой пример, как сюда передать нужную метку с помощью метода GET
<select data-placeholder="Выберите жанр" multiple name='tag_genre[]'>
if (!empty($_GET['tag_genre'])) { $args = array( 'tag' => $_GET['tag_genre'], ); }
Тут вся проблема сводится к вот этим скобкам tag_genre[]
Вот такой вариант с таксой работает, но с меткой все сложнее
if (!empty($_GET['tax_strana'])) { $args['tax_query'][] = array( 'taxonomy' => 'strana', 'field' => 'slug', 'terms' => $_GET['tax_strana'], );}
В общем я так и хочу вывести с учетом нескольких такс, тут проблема вот в чем, если отправлять данные name='tag_genre' тогда работает, но если отправить с вот такими скобками name='tag_genre[]' тогда не срабатывает, собственно эти скобки [] нужны для передачи сразу нескольких такс
Говорю укажи все в tax_query параметре и метки тоже...
if (!empty($_GET['tag_genre'])) { $args['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => $_GET['tag_genre'], );}
Спасибо, я именно так и сделал вчера, все работает. Просто не сразу разобрался, как именно нужно метки указывать,но к счастью все сработало
По какому полю сортировать нужно? Сортировки по таксе в ВП нет насколько я знаю по метаполям есть. Может вам ен сортировка нужна, а вывести просто с учетом нескольких такс?
Твой код не стандартен, попробуй все и рубрики и метки сунуть в массив tax_query такса рубрик называется category такса меток post_tag
$args[] = array('relation' => 'AND');
- это вообще ерунда какая-то.В общем приведи код в нормальный вид, убери лишние параметры category_name и tag - это все таксы, указывай их в tax_query