aPilot
@aPilot

Как сделать редирект с custom post wordpress?

На сайте сделаны произвольные записи они выводятся шорткодом в на обычных страницах.
В результате на них всё равно можно зайти если прописать путь.
Как сделать чтоб на определённых кустомных записях был редирект на ту страницу на которой они выводятся?
При том что для каждой кустом пост прописывать не вариант т.к. их несколько сотен.
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ответы на вопрос 2
@mais64
Фронтенд разработчик
Пример редиректа на со страницы записи на главную, добавить в functions.php
add_action( 'template_redirect', function() {
	if( is_singular('POST_TYPE_NAME') ){
		wp_redirect( home_url(), 301 );
		exit;
	}
} );
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Ответ Александр правильно решает сам редирект. А вот как определить автоматически куда редиректить - это другой вопрос. Вставка у вас идет в контент через шорткод, значит малой кровью (разумными ресурсами) вытащить эти данные из БД не получится.

Как я бы сделал - на сохранение страницы повесил бы функцию, которая парсила бы шорткод и залинкованным записям произвольного типа дописывала бы метаданные 'linked_on_page_id'. Таким образом автоматически записи произвольного типа будут получать привязку к ID страницы, где они залинкованы. А уже в самом редиректе я бы брал это значение из метаданных и отправлял редиректом через get_permalink.

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

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

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