Сортировка статей 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