Люди, прошу вас объяснить (разжевать) мне…
Есть произвольная запись: need
К ней создана таксономия: help
В итоге в админке, в левой панели есть:
Need => Все Need
Добавить Need
Рубрики Need
Если мы проваливаемся в Рубрики Need, то адрес у нас такой:
http://localhost:8089/wp-admin/edit-tags.php?taxonomy=help&post_type=need
Есть файл: taxonomy-help.php в котором указано:
* Template Name: taxonomy-help.php
* Template Post Type: need
1.Создаём новую рубрику Need, которая имеет slug ‘all’
2.Создаём новую рубрику Need, которая имеет slug ‘notall’
3. Переходим по адресу:
//localhost:8089/help/all/ или
//localhost:8089/help/notall/и
попадаем на 404 ошибку.
4. В каждой рубрике (slug ‘all’/slug ‘notall’) прикреплены записи (в каждой свои, для удобства тестирования).
5. Если мы переходим по произвольной записи, то имеем адрес:
http://localhost:8089/need/testovaya-zapis-1/
Хотя, при создании записи, в разделе рубрики (термы) отмечены соответствующие рубрики (к примеру: slug ‘notall’)
Я перечитал и опробовал то, что есть тут:
https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters
Я не могу понять, почему у меня ничего не выводится даже по такому примеру:
<?php
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'help',
'field' => 'slug',
'terms' => 'all',
),
),
);
$query = new WP_Query( $args );
?>
Пробовал разные варианты, но максимум что получается сделать, так это вывод названий всех созданных рубрик (термов) на странице в виде общего текста с «мёртвой» ссылкой (т.е. ссылки на текущую страницу) и кол-вом записей после ссылки.
Вот код:<?php
$number = 0; // 0=все рубрики. Можно ограничиться кол-вом рубрик указав соответствующую цифру.
$args = array(
'number' => $number,
'orderby' => 'count',
'order' => 'DESC'
);
$terms = get_terms('help', $args);
if($terms){
echo '<ul>';
foreach ($terms as $term){
echo '<a href="">';
echo "<li>{$term->name}{$term_id->ID}";
echo '</a>';
echo " ({$term->count})</li>";
// рядом в скобках указываем количество записей в категории
}
echo '</ul>';
}
?>
Или в виде ссылки на рубрику, при переходе на которую попадаешь на 404 ошибку.
Вот код:<?php
$term_slug = 'notall'; //передавать нужно альтернативное имя (slug)
$term_link = get_term_link($term_slug, 'help');
echo '<a href="'. $term_link .'">ссылка на раздел '. $term_slug .'</a>';
?>
Вопросы:
1.Как сделать так, чтобы при переходе на
//localhost:8089/help/all/ выводился список постов, который относится к slug ‘all’ и не выводился список постов slug ‘notall’.
2.Как сделать так, чтобы при переходе на
//localhost:8089/help/all/ выводился список постов, который относится к slug ‘all’ и всем его дочкам.
3.
Как сделать чтобы при переходе не попадать на 404 ошибку?