@Legal2019
Всё в имени моём... и радость и печаль...

Не получается разобраться с 404 при переходе по таксономии?

Люди, прошу вас объяснить (разжевать) мне…
Есть произвольная запись: 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 ошибку?
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы