Wordpress пытается получить архив несуществующей категории

Вкратце, я переместил некоторые статьи по умолчанию для типа post-type. И теперь мои статьи доступны с использованием старого www.example.com/articleurl/ и нового URL www.example.com/blog/articleurl/.

Возникла проблема: клиент добавил статью с адресом 2093. И он доступен с помощью www.example.com/blog/2093/. Но когда я пытаюсь получить его с помощью www.example.com/2093/, Wordpress пытается получить некоторый архив 2093 года или категории (кстати, нет такой категории), а затем перенаправляется на индексную страницу.

Итак, как это решить?

Нет, я не могу изменить URL этой статьи. Мне нужно оставить его 2093.

Да, мне нужна эта иерархия моего сайта, и мне нужен пользовательский тип сообщения.

Ответ 1

Создайте файл с именем archive-2093.php в корне вашей темы и добавьте следующий код:

<?php

$args = array (
    'name'         => '2093',
    'post_type'    => array( 'blog' ),
);


$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        //  adapt the following to suit the formatting and fields of your post.

        the_title();
        the_content();

    }
} else {
    // oh no, it didn't work.
}

// Restore original Post Data
wp_reset_postdata();

Вам нужно будет адаптировать цикл в соответствии с любым макетом и структурой, которые вы используете в single.php или blog-single.php. Концепция здесь состоит в том, чтобы создать конкретный архив за 2093 год, а затем просто выполнить пользовательский запрос, чтобы вернуть сообщение.

Не забудьте обновить свой код в 2093 году.

Ответ 2

Wordpress, не обслуживающий страницу за /2093, имеет смысл. Наличие страницы в /blog/ 2093 AND on/2093 будет считаться дублированным контентом, который не рекомендуется SEO. (Может быть исправлено с каноническими тегами)

В приведенном выше решении предлагается использовать новый файл шаблонов, который добавляется в обслуживание. Мое предложение состояло в том, чтобы просто добавить перенаправление из /2093 в/blog/2092. Это перенаправление должно работать до того, как Wordpress попытается проанализировать его как архив. Это можно сделать в файле .htaccess, но я рекомендую использовать плагин перенаправления. (Yoast включил это)

Если URL-адрес как /2093 необходим, просто добавьте его как обычную страницу вместо элемента блога.

Ответ 3

Viper007Bond создал плагин, который может помочь в вашей проблеме.

https://wordpress.org/plugins/allow-numeric-stubs/

Кроме того, было бы полезно, если бы вы использовали структуру постоянной ссылки, которую вы используете.

Удачи!