У нас есть нестандартный тип music
.
/music/
/music/post-name/
Кроме того, у нас есть тегоподобная таксономия genres
. Его URL-адреса:
/music-genres/genre-name/
Я пытаюсь сделать такие URL-адреса:
/music/
/music/post-name/
/music/genres/
/music/genres/genre-name/
/music-genres/
следует заменить на /music/genres/
.
Наконец, мы должны получить структуру URL, например:
/post-type/taxonomy/term/
/post-type/postname/
Как мне это сделать?
Возможный дубликат wordpress.stackexchange.com/questions/12843/…
@Bainternet это не дубликат
@ilovewordpress: тогда объясни лучше, в чем разница? Может быть, я могу помочь.
@Bainternet Я отредактировал тему.
Мне он кажется таким же. ilovewordpress, вы должны взглянуть на ответ Яна Фабри на wordpress.stackexchange.com/questions/12843/… Думаю, это вам поможет.
мне не понятно, можешь объяснить поподробнее?
Я новичок в WordPress, пожалуйста, приведите кодированный пример. Я что-то пробовал, не повезло.
Да, это возможно, потому что ваша
genres
структура/music/genres/[genre-name]
. Если бы это было/music/[genre-name]
так, это было бы сложно, потому что это конфликтовало бы с/music/[post-name]
.Просто нужно помнить о порядке. Правила перезаписи должны быть упорядочены от наиболее конкретных к наименее конкретным. Если вы сначала зарегистрируете тип записи, а затем таксономию, правила типа записи будут первыми. Проблема в том, что правила для типов сообщений содержат очень общее правило для сопоставления вложений, а это противоречит нашим терминам таксономии. Но это сработает, если вы сначала зарегистрируете таксономию, а затем тип записи.
Сбивает с толку то, что обычно вы передаете типы сообщений, которые будут использовать регистрируемую вами таксономию, но вы можете просто передать пустой массив и установить соединение позже.
Вы можете убедиться в этом и поиграть со своими правилами с помощью моего плагина Rewrite Analyzer.
Возможно, вы сможете найти некоторую информацию об этом сообщении: Пользовательские типы сообщений, таксономии и постоянные ссылки.
WordPress не поддерживает перегрузку структур постоянных ссылок в нужной вам степени. Вы можете написать свой собственный фильтр предварительной записи, чтобы преобразовать нужные URL-адреса в URL-адреса, которые может распознать WP_Rewrite, а затем написать фильтры для преобразования ссылок, сгенерированных WordPress, в ваш собственный стиль.
Чтобы понять это, изучите
WP_Rewrite::generate_rewrite_rules
иWP::parse_request
, которые принято считать «вуду».