- 22, Oct 2024
- #1
Я нахожусь в кругах, пытающихся установить простое правило перезаписи, и решил задать этот вопрос некоторым экспертам по переписыванию здесь.
У меня есть собственный тип сообщения «План питания», и я пытаюсь реализовать базовую перезапись URL-адреса, где посещение
will take the visitor to the most recent post of type "mealplan".update_post
Я пробовал использовать несколько вариантов этого правила:
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-адреса #строка-запроса