Intereting Posts
Почему некоторые параметры API REST изменились на идентификаторы вместо строк, когда API перешел в WP Core? pre_get_posts и установить Какой скрипт PNG Fix вы рекомендуете для IE6? Запретить WordPress удалять запросы из URL-адреса Медиа-библиотека не позволяет загружать файлы? Загрузить каталог Крюк для изменения пользовательских ссылок таксономии тегов? Удаление новых страниц с помощью роли редактора Иерархические пользовательские типы сообщений в массиве Пользовательский сортируемый столбец с WPAlchemy Пользовательские типы сообщений и template_redirect Имя шаблона всегда совпадает с именем каталога? Как я могу узнать, есть ли у меня страница с настраиваемым типом архива сообщений? категории сообщений – как показывать только категории с определенным идентификатором родителя Как показать темы рецензий ниже названия форума (WordPress + bbPress-плагин)? Добавить проверку и обработку ошибок при сохранении настраиваемых полей?

Переписать правила для настраиваемого типа сообщения

Существует неиерархический пользовательский тип сообщений «новости».

/news/ /news/page/2/ /news/post_slug/ 

У каждого сообщения есть пользовательские поля "views" . Когда кто-то открывает сообщение, значение поля увеличивается на единицу.

Хотелось бы сортировать сообщения по этому настраиваемому полю по его значению.

 /news/ /news/views/ = /news/?sort=views (get posts with custom field "views" and sort asc) /news/views/page/2/ = /news/?sort=views&page=2 (similar to previous, next page) /news/post_slug/ 

Получил работу /news/?sort=views , но эта ссылка не похожа на человека.

Он должен быть преобразован в /news/views/ и иметь возможность обрабатывать разбиение на страницы.

Как мы можем это сделать?

Solutions Collecting From Web of "Переписать правила для настраиваемого типа сообщения"

Вы должны посмотреть add_rewrite_tag() и add_rewrite_rule()

Также читайте эту и эту тематику. Они очень близки вам.

После настройки правила перезаписи не забудьте сбросить правила

 add_action( 'wp_loaded','my_flush_rules' ); // flush_rules() if our rules are not yet included function my_flush_rules(){ $rules = get_option( 'rewrite_rules' ); $pattern = 'news/([^/]+)?'; // the same pattern that was used in add_rewrite_rule if ( !isset( $rules[$pattern] ) ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } }