Я создаю сайт Wordpress с несколькими пользовательскими типами постов. Каждый тип сообщения - это отдельный журнал. У меня также есть собственные мета-поля для журнала года и выпуска.
Я хотел бы иметь URL-адреса (используется archive.php):
http://my_site/magazine/name/
http://my_site/magazine_name/year/
http://my_site/magazine_name/year/issue/
Я сделал это по коду:
function magazine_rewrite_tag() {
add_rewrite_tag('%issue_year%', '([0-9]{4})');
add_rewrite_tag('%issue%', '([0-9])');
}
add_action('init', 'magazine_rewrite_tag', 10, 0);
а также:
function magazine_rewrite_rules() {
add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top');
add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top');
}
add_action('init', 'magazine_rewrite_rules');
Конечно, у меня есть также пользовательские запросы в archive.php. И это работает отлично.
Но теперь мои URL для отдельных статей не работают. По умолчанию это:
http://my_site/magazine/post-title
но он показывает все статьи из журнала, такие как url (и использует шаблон archive.php):
http://my_site/magazine/
Как добавить правильно переписать правила для отдельных пользовательских сообщений? Возможно, я хотел бы иметь URL для одного сообщения (только для выбранных пользовательских типов сообщений) в этом формате:
http://my_site/magazine/year/issue/post-title
custom-post-types
permalinks
url-rewriting
rewrite-rules
Лукаш Флорчак
источник
источник
10
является приоритетом по умолчанию . Вы можете оставить оба в этом случае ... или попробовать большее число. (2) Вы проверили полученные правила переписывания? Также убедитесь, что вы проверяете порядок этих правил, поскольку они обрабатываются в их порядке. Дамп$GLOBALS['wp_rewrite']
. (3) Вы добавили,query_vars
что может конфликтовать?Ответы:
Я нашел решение! Плагин Monkeyman Rewrite Analyzur был очень полезен: https://wordpress.org/plugins/monkeyman-rewrite-analyzer/
Так что теперь у меня есть такие рабочие URL-адреса ...
single.php:
archive.php:
На пользовательской странице редактора постов в wp-admin я использую плагин Advanced Custom Fields для года выпуска и выпуска. Вы также можете определить мета поля самостоятельно.
Затем я добавил теги перезаписи для года выпуска и выпуска:
Затем я добавил правила перезаписи для любой комбинации URL:
В конце я заменяю стандартные URL-адреса своими собственными, годом выпуска и выпуском
источник