Решение проблемы постраничной навигации категорий в WordPress

Решение проблемы постраничной навигации категорий в WordPress

Анализировал свой блог на наличие битых ссылок и обнаружил их целую кучу. Думаю, посмотрю, что случилось.

И первая же ссылка указывает на вторую страницу категории «новости»

Думаю в чем проблема, страница такая есть. Но нажав на нее, я увидел «Что такой страницы не найдено»

Проверив другие категории, обнаружил то же самое.

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

Первым делом подумал на плагин «page-navi».

Полез на другой свой блог, но там все нормально и страницы в категориях нормально отображаются.

И тогда начал сравнивать вид url обоих блогов и нашел расхождение.

Проблема эта вылазит при работе page-navi с некоторым видом ЧПУ

А именно, когда в ЧПУ категорий убрано слово «category»

Как я уже давно сделал на этом блоге

1
2
3
4
5
6
7
Работает:

http://sayt.ru/category/name/page/2

Не работает:

http://sayt.ru/name/page/2

Решение проблемы нашел на этом сайте

Нужно вставить в корневой файл wordpress вызов функции и ее описание

  1. Нужно отредактировать файл index.php корневой папки WordPress.
  2. После строки define ('WP_USE_THEMES', true); вставить код вызова дополнительной функции myfuckingstub ();
  3. В конце документа описать функцию myfuckingstub ();
  4. И сохранить документ (не забывайте для wordpress нужна правильная кодировка, блокнотом не стоит редактировать)
    function myfuckingstub ()
1
2
3
4
5
6
7
8
9
10
{
         $uri = $_SERVER['REQUEST_URI'];
         preg_match('/^\/([a-z0-9\-_]+)\/page\/([0-9]+)$/i', $uri, $matches);
     
         if (count($matches) == 0) return;
     
         $uri = '/category/'.$matches[1].'/page/'.$matches[2];
         $_SERVER['REQUEST_URI'] = $uri;
         $_SERVER['REDIRECT_URL'] = $uri;
    }

Вид файла index.php после редактирования:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    /**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */


/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */

    define('WP_USE_THEMES', true);
    myfuckingstub();
     
    /** Loads the WordPress Environment and Template */
    require('./wp-blog-header.php');
     
    function myfuckingstub()
    {
         $uri = $_SERVER['REQUEST_URI'];
         preg_match('/^\/([a-z0-9\-_]+)\/page\/([0-9]+)$/i', $uri, $matches);
     
         if (count($matches) == 0) return;
     
         $uri = '/category/'.$matches[1].'/page/'.$matches[2];
         $_SERVER['REQUEST_URI'] = $uri;
         $_SERVER['REDIRECT_URL'] = $uri;
    }

Но данный код поможет если у вас только один уровень категорий, а у меня их два.

Теперь корневые категории нормально листаются, а вот в подкатегориях проблема осталась.

По этому буду искать дальше.

P.S. Не забываем это index.php не из темы, а именно из корня блога.

Дополнено: Я таки для нормальной работы категорий вернул слово “category” обратно в рубрики.

И будет уро на будущее, что все изменения нужно проверять. Такая вроде мелочь, а очень сильно подкосила функциональность блога.

Автор:
Приглашаю присоединиться ко мне в следующих сервисах:
Получайте новые статьи по созданию сайтов на ваш почтовый ящик.

Комментарии Вконтакте:

Комментарии Facebook:

Комментариев3 комментария

Спасибо, пригодится как раз СДЛ собрался создавать

Большое спасибо за статью, буду создавать новые сайты — опробую

Отличная статья Спасибо огромное

Написать ответ

Получай обновления блога первым!
Каталог@Mail.ru - каталог ресурсов интернет