Intereting Posts
Пользовательский виджет случайных котировок прерывается при использовании в нескольких боковых панелях Есть ли фильтр для определения изображения OG на данной должности? post_class () вырывается из форматирования. , , добавлена ​​дополнительная разметка Отображать значение настраиваемого поля в начале сообщения Помогите с этим настраиваемым полем, если поле не установлено, ничего не отображает Как предотвратить спам-комментарии? Фильтр для замены объекта WP_query для данной категории Перенаправление на страницу ссылок после входа в систему Автоматически добавлять тег в соответствии с пользовательскими метаданными Можно ли хранить носители WordPress в разных подпапках? Безопасность и .htaccess Пользовательский навигатор с различным выходом в зависимости от глубины Изменить изображение по умолчанию HTML get_categories () только для CPT Есть ли какие-либо плагины Worpdress для изменения редактора тем?

Изменена постоянная ссылка CPT – следует ли перенаправить?

Следуя этому ответу , я недавно изменил структуру permalink типа персонализированного сообщения под названием «Литература», чтобы включить термин таксономии:

Старая структура: mysite.com/literature/books/post_name

Новая структура: mysite.com/literature/fiction/post_name

Однако при посещении оригинальной постоянной ссылки WordPress автоматически не перенаправляет его, и обе страницы отображаются как отдельные записи в поиске Google.

Должен ли я перенаправить старые ссылки на литературу? Если да, то каков наилучший способ сделать это?

ОБНОВИТЬ

Спасибо Брайан, я изменил ваш код, как показано ниже, и он работает по своему желанию:

 add_action('parse_request', 'redirect_books_to_fiction', 0); function redirect_books_to_fiction(){ global $wp; if(preg_match('/literature\/books/', $wp->request)){ $redirect = get_bloginfo('siteurl').'/'.str_replace('books', get_the_term_list( $ID, 'literature_category', '', ' / ', '' ), $wp->request); wp_redirect($redirect, 301); exit; } } 

Однако, как я могу перенаправить все, а не только «книги»?

В моей литературе я могу ввести любое слово в след и не перенаправлять.

например, mysite.com/literature/any_random_word/post_name

Просто остается такой постоянной.

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

например, если я меняю: mysite.com/food/recipes/post_name на: mysite.com/a_random_word/another_random_word/post_name

Он перенаправляет правильную ссылку.

Я предполагаю, что это из-за пользовательской структуры permalink, которую я использовал в этом ответе

Вот сайт .

Solutions Collecting From Web of "Изменена постоянная ссылка CPT – следует ли перенаправить?"

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

 add_action('parse_request', 'redirect_books_to_fiction', 0); function redirect_books_to_fiction(){ global $wp; if(preg_match_all('~literature\/(.+)/(.+)?~', $wp->request, $matches)){ $redirect = get_bloginfo('siteurl').'/'.str_replace('books', 'fiction', $wp->request); wp_redirect($redirect, 301); exit; } } 

Чтобы еще раз ответить на вопрос о совпадающих сегментах:

 add_action('parse_request', 'redirect_cpts', 0); function redirect_cpts(){ $one_to_one = array( 'literature' => 'books', 'food' => 'foo', 'bar' => 'food' ); $request = $_SERVER['REQUEST_URI']; //We limit the scope of the regex to our specified CPTs so we don't hammer every request if(preg_match_all('~(literature|food|bar)/(.+)/(.+)?~', $request, $matches)){ if(!$one_to_one[$matches[1][0]]) return; $post_type = $one_to_one[$matches[1][0]]; //Do proper escaping $post_name = $matches[3][0]; //Do proper escaping if($post_name && $post_type){ global $wpdb; $post = $wpdb->get_row("SELECT * ID FROM $wpdb->posts WHERE post_type = '$post_type' AND post_name = '$post_name'"); $redirect = get_permalink($post); if($redirect){ wp_redirect($redirect, 301); exit; } } } } 

Я бы также рекомендовал посмотреть перенаправление плагинов как хороший способ управлять измененными URL / permalinks