Перезапись Url-Адресов. Можно Ли Передавать «Цифровые Сообщения» В Строке Запроса Url-Адреса?

  • Автор темы Psylocker
  • Обновлено
  • 22, Oct 2024
  • #1

Я нахожусь в кругах, пытающихся установить простое правило перезаписи, и решил задать этот вопрос некоторым экспертам по переписыванию здесь.

У меня есть собственный тип сообщения «План питания», и я пытаюсь реализовать базовую перезапись URL-адреса, где посещение

 
 update_post 
will take the visitor to the most recent post of type "mealplan".

Я пробовал использовать несколько вариантов этого правила:

global $wp_rewrite; $current_mealplan = get_posts( array( 'post_type'=>'mealplan', 'numberposts'=>1, 'orderby'=>'date', 'order'=>'DESC' ) ); $wp_rewrite->add_rule('mealplan/current', 'index.php?post_type=mealplan&post_id='.$current_mealplan[0]->ID, 'top');

... но я не могу заставить параметры «numberposts» или «posts_per_page» делать что-либо подобное в строке запроса. Он просто переходит прямо на страницу архива с количеством сообщений на странице по умолчанию.

Это делает то, что я хочу:

global $wp_rewrite; $wp_rewrite->add_rule('mealplan/current', 'index.php?post_type=mealplan&numberposts=1&orderby=date&order=DESC', 'top' );

... но за счет дополнительного запроса и потенциального сброса правил при каждой загрузке страницы. Даже если я оптимизирую это, сохранив текущий идентификатор сообщения в опции, которая обновляется site.com/mealplan/current (so rules only have to be flushed when they change), this feels like unnecessary work that could be avoided if I could only get the url parameters above to work correctly.

#перезапись URL-адреса #строка-запроса

Psylocker


Рег
24 Feb, 2005

Тем
72

Постов
201

Баллов
581
  • 25, Oct 2024
  • #2

Хорошо,

 if( !empty( $wp->query_vars['latest_mealplan'] ) ){

$wp->query_vars['posts_per_page'] = 1;

add_filter( 'template_include', create_function( '$a', 'return locate_template(array("single-mealplan.php"));' ) );
}
 
is not actually a query variable. It's just turned into $wp в 'parse_request' before the query is run. index.php?post_type=mealplan&orderby=date&order=DESC&latest_mealplan=1 — это частная переменная запроса, что означает, что вы не можете запустить ее в строке запроса. Возможным решением была бы регистрация пользовательской переменной запроса (скажем, 'latest_mealplan' and add that variable to the rewrite rule (e.g. posts_per_page ).

Затем подключите get_posts() , which passes the posts_per_page возражать против обратного вызова. Далее остается только установить параметр:

numberposts

Надеюсь, это поможет!

 

Malyginat53


Рег
02 May, 2020

Тем
77

Постов
200

Баллов
595
Похожие темы Дата
Похожие темы
Получение Url-Адреса Текущей Страницы, Когда Установлена ​​Постоянная Ссылка По Умолчанию
Как Удалить Пустое Пространство Меню При Создании Страницы Администратора Без Заголовка Меню С Помощью Add_Submenu_Page
Разработка Темы — The_Post_Thumbnail() Получает Url-Адрес Изображения «Среднего» Размера.
Php — Любой Может Зарегистрироваться Через Бэкэнд
Настройка — Отображение Пользовательского Типа Сообщения С Помощью Get_Template_Part В Определенном Макете.
Действия – Невозможно Обновить Function.php После Написания Короткого Кода
Как Я Могу Показывать Запланированные Публикации В Календаре Google?
Разрешения - Как Отключить Доступ Администратора/Редактора К Сообщениям Определенных Пользователей.
Настройка — Ограничить Медиатеку Заданной Папкой
Запрос — Как Использовать Подстановочные Знаки В Запросах $Wpdb, Используя $Wpdb->Get_Results И $Wpdb->Prepare?
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно