Изменяем структуру постоянных ссылок через functions.php
Если вы хотите просто поменять структуру пермалинков на своём блоге, то лучше вам воспользоваться меню.
Если всё это настраивается в админке, тогда зачем лезть в functions.php?
- если нету доступа к админке
- при создании плагина или темы
- по какой-то вашей собственной причине
И сразу к делу — вот вам код, если не знаете, куда вставлять — прочитайте пожалуйста заголовок статьи 🙂
function my_permalink_function(){
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%category%/%postname%.html');
$wp_rewrite->flush_rules();
}
add_action('init', 'my_permalink_function');
Как это работает?
Итак, структура постоянных ссылок задается на 3-й строчке (в скобках и кавычках) при помощи структурных тегов.
Если использовать тот пример, то ссылки на страницах с постами будут выглядеть так же, как у меня на блоге (на этом блоге).
Существуют и другие теги:
- %year%
год публикации (пример: 2012)
- %monthnum%
месяц (пример: 11)
- %day%
день (пример: 27)
- %hour%
час (пример: 14)
- %minute%
минута (пример: 59)
- %second%
секунда (пример: 11)
- %post_id%
id записи (пример: 505)
- %postname%
ярлык записи (пример: change-permalinks-in-functions-php)
- %category%
ярлык категории (пример: wordpress)
- %author%
ник автора (пример: admin)
Думаю имеет смысл рассмотреть один пример.
Запись в виде тегов:
/%year%/%monthnum%/%day%/%postname%.html
Как будет выглядеть ссылка:
https://misha.agency/2012/01/20/change-permalinks-in-functions-php.html

Миша
Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.
Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.
А какой functions.php? Их штуки 4 во всём проекте...
который находится в папке с темой)
А можно поменять путь к картинкам, используя подпапки для больших, маленьких картинок. А не все в перемешку, как в последнем вордпрессе?
я вот задался вопросом, а как можно сделать окончание .html только к конечным страницам сайта? то есть если у страницы есть дочерняя страница, то у родительской тоже есть html, потом надо чтобы сразу у всех страниц (теги, посты, страницы, категории, таксономии и тд) проставлялся .html если они конечные...
Есть какие то идеи.?
как насчет плагина «html on pages»?
он добавляет html только страница, причем всем, и родительским тоже. А я хочу чтобы у родительских был на конце слеш /, а у конечных .html, и то же самое, надо к тегам префикс.
Пока нигде не встречал решения, на джумле есть решение
круто, если решения нет, то его можно написать самому и поделиться с миром 🙂
очень круто, но я точно с таким не справлюсь!)) я просто верстальщик, частично разбирающийся в коде, но вот что-то придумать и сделать самому - пока не дорос до такого))
ну мы все с чего-то начинали)
ок, возьму на заметку, как дойдут руки, напишу этот плагин.
т.е. суть в том чтобы в конце всех урлов добавлялось .html, верно?
в конце всех конечных страниц. То есть создаем страницу site.ru/stranica/ и у неё дочерняя site.ru/stranica/doch.html
Ну или просто чтобы был выбор, ставить html или нет на определенной странице.
А то сейчас с помощью "html on pages" было бы так:
site.ru/stranica.html и site.ru/stranica/doch.html
Скажите а реально сделать в вордпресс так чтоб ссылки на категории имели такой вид www.сайт/тип поста/название таксономии/название категории
В принципе всё реально. Думаю да.
Реально:) нашел плагин он все это делает , Custom Post Type Permalinks
Но это для новых типов постов, для стандартного пост можно указать дополнительный слуг в настройках постоянных ссылок. Но мне нужно было именно для нового типа постов.
Миша, подскажите выход из ситуации.
Если в Постоянных ссылках выбрать "Произвольно", и выставить шаблон без закрывающего слеша (к примеру %postname%.html), то закрывающие слеши убираются из всех URL (т.е. категории выглядят как /%category% , а произвольные типы постов как %post_type%/%postname%). Если задать шаблон со слешем, то и в других ссылках он присутствует.
Как убрать слеши только для постов и страниц, оставив их в категориях и далее везде? Я понимаю, что рерайт работает и без слеша, мне это нужно исключительно с эстетической целью - привык, знаете ли, за многие годы, чтобы ЧПУ заканчивались либо слешем либо расширением.
Добрый день, Андрей,
готового кода у меня к сожалению нет, могу порекомендовать почитать это, возможно идеи появятся.