Intereting Posts
Автоматическое изменение размера при записи с помощью редактора пользовательских сообщений WP Многократная загрузка фотографий с надписью на лицевой стороне для пользовательского типа сообщения Настроить сообщение об ошибке WooCommerce Предложение по пользовательскому типу почтового типа / таксономии delete_post_meta () для целых CPT / нескольких сообщений? Как предотвратить наводнение комментариев? 2 недели назад от meta query meta value Пользовательский тип сообщения с загрузкой файла – нужно «установить как поле» вместо «отправить в редактор», wp_schedule_event не работает? Инкремент публикует комментарии ежедневно Как фильтровать настраиваемый тип сообщений по пользовательской таксономии в новейшем API-интерфейсе WordPress RESTful? Как получить доступную публикацию для публикации в социальных сетях и показать на отдельных страницах сообщений? Как удалить автоматически добавлено <br class="clear"> Остановить перенос страницы WordPress на страницу-страницу? query_posts сортируются по нескольким направлениям

add_rewrite_rule () vs $ wp_rewrite-> правила vs 'rewrite_rules_array'?

Я написал правила перезаписи для моих настраиваемых типов сообщений. они хорошо работают, за исключением того, что WP не обновляет URL-адрес в User Agent, когда redirect_url не соответствует запрошенному_URL.

все остальное отлично работает, включая мои пользовательские permastructs ('post_type_link') и настраиваемые параметры шаблона ('single-template').

мои правила:

// custom URL rewrite for Album posts add_action( 'init', 'gregory_rewrite_album_link' ); function gregory_rewrite_album_link() { // album--%album_slug%/ OR album/%album_slug%/ // preferred permastruct: album--%album_slug%/ add_rewrite_rule( '^album(/|--)([^/]+)/?$', 'index.php?post_type=gregory-cpt-album&name=$matches[2]', 'top' ); } // custom URL rewrite for Track posts add_action( 'init', 'gregory_rewrite_track_link' ); function gregory_rewrite_track_link() { // accepts and rewrites the following permutations: // where album would be: album--%album_slug% OR album/%album_slug% // where track would be: track--%track_slug% OR track/%track_slug% // preferred permastruct: album--%album_slug%/track--%track_slug%/ add_rewrite_rule( '^(album(/|--)[^/]+/)?track(/|--)([^/]+)/?$', 'index.php?post_type=gregory-cpt-track&name=$matches[4]', 'top' ); } 

Мне было интересно узнать, каковы различия между использованием add_rewrite_rule (), добавлением правил непосредственно в правила $ wp_rewrite-> и подключением к rewrite_rules_array? есть ли какие-то различия? будет ли одна из альтернатив заставлять WP обновлять URL-адрес в User Agent, когда постоянная ссылка целевой почты отличается от запрошенного URL-адреса?

один пример URL-адреса, который не обновляется … записи альбома и трека связаны термином терминологии. крючок в «post_type_link» для дорожек находит связанный альбом и вставляет его пулю в постоянную ссылку. правила перезаписи выше, убедитесь, что работают как новые, так и традиционные свойства, но запрашивая этот url /album/serenity/track--beetle-attack/ , найдут сообщение, но не обновят URL-адрес /album--serenity/track--beetle-attack/ .

маловероятно, что кто-то будет использовать традиционные пермаструктуры, потому что я не буду рекламировать их или использовать их на своем сайте, но было бы неплохо добавить, что URL-адрес обновится в User Agent, если это возможно.

веселит,
Грегори

Solutions Collecting From Web of "add_rewrite_rule () vs $ wp_rewrite-> правила vs 'rewrite_rules_array'?"

Прежде всего используйте add_rewrite_rule() поверх messing напрямую с $wp_rewrite->rules если это возможно. Последнее немного низкоуровневое.

Что касается «url not update» – это не проблема правил перезаписи. Они просто указывают URL-адреса на их контент, но они не обновляют адресную строку пользователя.

Файл, который отвечает за это, – /wp-includes/canonical.php . В частности, функция redirect_canonical() подключена к template_redirect .

Этот redirect_canonical() имеет свой собственный фильтр:

 add_filter('redirect_canonical', 'wpse50912_redirect_canonical',10,2) function wpse50912_redirect_canonical($redirect_url, $requested_url){ //Do stuff - determine if url is requesting album/track and check //If it is, check it is using the new structure. //Return the url you want in the address bar. return $redirect_url; }