Для проекта я работаю, я хочу, чтобы достичь следующей постоянную структуру для моих постов:Wordpress пользовательские почтовые Permalinks с таксономией нарушает нормальные страницы
domain.com/special/my-post-slug
где специальная пользовательская таксономия.
Что я сделал:
- Пошел настройку> Permalinks
- Выберите пользовательский параметр и трансформированный его на это: /% скидка% /% postname%/
- зацепили в следующих Wordpress крючков как это:
<?php
// in functions.php
add_filter('post_link', 'specials_permalink', 10, 3);
add_filter('post_type_link', 'specials_permalink', 10, 3);
function specials_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%specials%') === FALSE) {
return $permalink;
}
$post = get_post($post_id);
if (!$post) {
return $permalink;
}
$terms = wp_get_object_terms($post->ID, 'specials');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) {
$taxonomy_slug = $terms[0]->slug;
} else {
$categories = wp_get_post_categories($post_id->ID, array('fields' => 'all'));
if(isset($categories[0])) {
$taxonomy_slug = $categories[0]->slug;
} else {
$taxonomy_slug = 'general';
}
}
$permalink = str_replace('%specials%', $taxonomy_slug, $permalink);
return $permalink;
}
Этот код прекрасно работает, но так как я добавил специальную структуру Постоянной ссылки Ф.О. r мои сообщения, мои страницы больше не будут загружаться. Все они приводят к 404. Как только я удаляю% specials% из структуры permalink, они снова работают.
При отладке я узнал, что Wordpress соответствует моим URLs, как следует:
запроса:
фр/мой-слизняк
Строка запроса:
языки = Fr & события = мой -slug
Правило согласованного правильного переоборудования:
(фр | п | еп)/([^ /] +)/$
Сопрягано переписывание запросов:
LANG = фр & события = мой-слизняк
Но это должно быть «pagename» - «специальные». Я уже пытался переназначить некоторые URL-адреса и добавить пользовательские правила перезаписи и все такое, но я не могу найти какое-либо решение. Самая странная часть состоит в том, что согласно WP Codex структура permalink применяется только к сообщениям и страницам архива, а не к страницам. Моя функция, подключенная к ссылке, не запускается при загрузке страницы. Но почему-то Wordpress считает мои страницы особенными.
Я попытался добавить как можно больше информации, но если что-то не хватает, просьба спросить.
Если я сделаю это, мои URLs не соответствует ни перезапись править. –