У меня был сайт со структурой URL-адресов, такой как
example.com / news / story-1
example.com/news/local/story-2
example.com/food/tacos / story-3
Теперь он перемещен в мультисайт, с вложенными папками сайта / news / и / food /.
В этих под-сайтах категория верхнего уровня / по умолчаниюявляется Новости или Еда, соответственно, заменяя Без рубрики.Поэтому, если постоянная ссылка установлена на %category%/%postname%/
, постоянная ссылка будет выглядеть как
example.com / news / news / local / story-title
example.com/food/food/tacos/story-title
Чтобы удалить категорию, которая является дубликатом подпапки сайта, я добавил это в functions.php:
add_filter( 'post_link', 'remove_parent_category', 10, 3 );
function remove_parent_category( $permalink, $post, $leavename ) {
$permalink_array = explode("/", $permalink);
$clean_permalink = array_unique($permalink_array);
$new_permalink = implode("/", $clean_permalink);
return $new_permalink;
}
Это работает, возвращая мне
example.com/news/local/story-2
example.com/food/tacos/story-3
и возможность навигации по таким категориям, как
example.com / news /
example.com/news/local/
example.com/news/local/crime/
и т. Д.
Однако постов, которые находятся в категории верхнего уровня, теперь 404 (то естьследовало ожидать), потому что их URL теперь
example.com / news / story-1
(это то, что я хочу, но я не хочу, чтобы весь сайт был просто %postname%/
, потому что вы теряете простую навигацию по категориям в виде дерева ссылок).
Исходя из того, что я собираю, я думаю, что мне нужно использовать pre_post_link или правило перезаписи для обработки этих постов верхнего уровня.как если бы моя структура постоянных ссылок была просто %postname%/
, а не %category%/%postname%/
, но вот где я застрял.
То, что я пробовал: я пробовал пару решений, плавающих здесь, среди прочегоВещи, которые я пытался изменить, но ссылки на посты с высшей категорией обнажились до сих пор 404 wordpress.stackexchange.com / a / 133587/170714