1

Тема: Редирект страниц из корневого каталога в категории

Всем доброго времени суток. Как то пару лет назад создал свой один сайт на WP, сайт хорошо продвинулся, но спустя какое то время решил провести реструктуризацию WordPress. Что нужно было сделать, зачем и в чем была проблема?

Дело в том, что все страницы находились в корневом каталоге. Вначале, создавая как то даже  и не задумывался о том, что сайт будет расширятся и придется уложить все по полочкам. Решения искал неделю, а то может и две. Нашел только решение через регулярные выражения с помощью настроек Apache в файле .htaccess, но мне этот вариант не подошел. По этому решил заняться написанием функции для WordPress. Сразу скажу, что php знаю немного, поэтому это моя первая написанная функция для WP (упомянул, чтобы сильно вы меня не ругали, если где либо найдете ошибки).

2

Re: Редирект страниц из корневого каталога в категории

Тем не менее, скрипт запустился, и он отлично работает. В чем принцип работы переадресации? Суть в том, что если пользователь приходит на старую страницу, которая ранее находилась в каталоге, то его перебрасывает на нужную. Поражает то, что перебрав кучу плагинов, я так и не нашел подходящего решения этой проблемы. Как будто никто с этим не сталкивался...

Кстати, вот сам скрипт переадресации записей в рубрики, может кому пригодиться.

<?php

    //полный текущий URL страницы
    $fool_now_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

    //каноничный URL
    $link_canonical = get_permalink($id);

    //относительный путь
    $parse_url = parse_url($fool_now_url);
    $parse_url_path = $parse_url['path'];

    preg_match("/\/(.*?).html/", $parse_url_path, $cut_url);
    $cut_url1 = ($cut_url[1]);

    //поиск по базе post_nane
    if ($fool_now_url != $link_canonical)
    {

        $query = "SELECT guid FROM $wpdb->posts WHERE post_name='$cut_url1' AND post_type = 'post' AND post_status = 'publish'";
        $guid = $wpdb->get_var( $query );
        
        if (!empty($guid))
        {
            header("HTTP/1.1 301 Moved Permanently");
            header("Location: $guid");
            exit();  
        }
   }

?>

Код скопировать, открыть header.php и в самый верх вставить код. Сохранить. Если у кого есть другие мысли и решения, рад буду выслушать. Спасибо вам за внимание  ))