smsc banner 468x60smsc banner 728x90smsc banner 930x180jivo banner 468x60jivo banner 728x90jivo banner 930x180etxt banner 468x60etxt banner 728x90etxt banner 930x180

Сегодня мы рассмотрим довольно распространенный сценарий: вы переносите сайт откуда-то куда-то, у вас есть список старых ссылок и список новых ссылок. Ваша задача сделать так, чтобы при заходе по старой ссылке шел редирект на новую ссылку. Это важно как для поисковиков, так и для пользователей — чтобы при переходе по ссылкам у вас не было 404 страниц.

Обработать такой список — это большая головная боль и сегодня мы рассмотрим пример, как это сделать с помощью excel. Для этого мы будем использовать простую библиотеку SimpleXLSX, которая умеет конвертировать файлы в формате .xlsx в простые массивы на php. О том, как она работает мы уже разбирали ранее.

Библиотека должна быть подключена следующим образом:

require_once get_template_directory() . '/includes/plugin-additions/simplexlsx.class.php';

В качестве примера рассмотрим сайт potolkoff59.ru, на котором при редизайне поменялась структура ссылок и список редиректов стал выглядеть следующим образом:

Редиректы в WordPress должны происходить на хуке template_redirect, мы создаем функцию и вешаем на этот хук. Импортируем excel-файл и собираем два массив — с редиректами и списком запросов. После этого проверяем, что текущий запрос есть в списке старых ссылок и в списке редиректов и производим редирект с помощью функции wp_redirect()

// excel-редиректы
add_action( 'template_redirect', 'potolki_redirects' );
function potolki_redirects() {

$fileImport = get_stylesheet_directory() . '/data/potolkoff59.ru.xlsx';
if ( $xlsx = SimpleXLSX::parse( $fileImport )) {
$sheetData = $xlsx->rows(1);

$array = array();
$requests = array();

foreach ( $sheetData as $keyD => $sheetRow ) {
if ( $keyD != 0 && $sheetRow['0'] && $sheetRow['1'] ) {

// убираем регулярками протокол и домен
$old_request = $sheetRow['0'];
$old_request = preg_replace('/^(http[s]?):\/\//', '', $old_request );
$old_request = preg_replace('/^[^\/]+/', '', $old_request );

// собираем два массив - с редиректами и запрсоами
$array[$old_request] = $sheetRow['1'];
$requests[] = $old_request;

}
}

// проверяем, что массивы оказались не пустыми
if ( !empty( $array ) && !empty( $requests ) ) {
$current_request = $_SERVER['REQUEST_URI'];

// проверяем, что текущий запрос есть в списке старых ссылок и в списке редиректов
if ( in_array( $current_request, $requests ) && isset( $array[$current_request] ) ) {
wp_redirect( $array[$current_request], 301 );
}

}

}

}
jivo banner 480x320jivo banner 728x90jivo banner 120x600kwork banner 480x320kwork banner 728x90kwork banner 120x600flexbe banner 480x320flexbe banner 728x90flexbe banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие посты

Как импортировать данные из excel в WordPress

При работе с WordPress часто возникает необходимость обработки табличных данных. Сегодня мы рассмотрим пример, как импортировать данные из excel на сайт на WordPress. В качестве инструмента будем использовать простую библиотеку SimpleXLSX, а о том, как с ней работать мы разбирали ранее. Библиотека должна быть подключена следующим образом: Для примера рассмотрим простую таблицу с контактами: Для…