Intereting Posts
Таксономия, субтаксономия, детальная таксономия продукта woocommerce У меня есть term_taxonomy_id – есть ли API-вызов для получения таксономии? Тема Проверка ошибок в отношении отсутствующих правил CSS Ссылка Facebook на логотип сайта Проблемы с интерфейсом администратора – толстый бокс? JQuery? Добавить comment_meta в wp_comment_reply Как я могу централизовать использование и одобрение контента в многостраничной установке WordPress Удалите «сообщения» от администратора, но покажите пользовательский пост Как переписать URL-адрес и получить значения? Меню пользовательской панели не остается открытым для пользовательской таксономии Как перемещать комментарии Bubble на правую сторону панели инструментов Перемещение сайта wordpress на подстраницу другого сайта wp_redirect "уже отправлены" после формы отправки переднего плана «URL-адрес плагина пользовательского типа» URL-адрес плагина strcuture Требовать от пользователя ввода кода из массива разрешенных кодов с помощью Gravity Forms

Использование настраиваемого значения поля для перенаправления с 404 страницы

Я перехожу от старой CMS к WordPress.

Старые статьи сохраняются как сообщения, а новая постоянная ссылка WordPress равна% post-id%.

Старый пул URL-адресов уникален и сохраняется как настраиваемое поле для каждого сообщения; имя настраиваемого поля – «old_url».

Например:

  • Идентификатор сообщения: 123
  • Имя настраиваемого поля: old_url
  • Значение настраиваемого поля: / servlet / Satellite? C = ArticleA_C & cid = 1189064956899

Я хочу использовать значение old_url для перенаправления со старой ссылки на новую ссылку.

Итак, если кто-то запросил «domain.com/servlet/Satellite?c=ArticleA_C&cid=1189064956899», он будет перенаправлен на новую постоянную ссылку и не получит ошибку 404.

Solutions Collecting From Web of "Использование настраиваемого значения поля для перенаправления с 404 страницы"

Я не могу сказать, что я рекомендовал бы это в высоконагруженной системе, если что-то должно быть 301'd в HTAccess или иметь свою собственную настраиваемую таблицу. Ниже приведено решение, которое захватит запрошенный URL-адрес и попытается найти сообщение с соответствующим мета:

 /** * Redirect 404s based on requested url * * @return void */ function wpse_226378() { global $wp; if( is_404() ) { $current_url = add_query_arg( $_REQUEST,$wp->request ); // Get current requested URL ( minus the domain ) $page = get_posts( array( // Get a single post that has that URL as a post meta 'post_type' => 'page', 'posts_page_page' => 1, 'meta_key' => 'old_url', 'meta_value' => sanitize_text_field( $current_url ), 'fields' => 'ids', ) ); if( ! empty( $page ) ) { // IF it's found wp_safe_redirect( get_permalink( $page[0] ), 301 ); // 301 redirect it exit; // Exit script entirely } } } add_action( 'template_redirect', 'wpse_226378' );