Wordpress Custom переписывает - PullRequest
       2

Wordpress Custom переписывает

0 голосов
/ 21 февраля 2019

Я пытаюсь создать собственное правило переписывания следующим образом:

add_rewrite_rule(
    'sample-list/([A-Za-z0-9-]+)/?$',
    'index.php?pagename=sample-list&custom_var=matches[1]',
    'top' 
);

В семпле-списке у меня есть список со ссылками.

У меня также есть образец списка страниц, который является шаблоном, где я генерирую эти ссылки.И ссылка выглядит так: http://test.local/sample-list/whatever-111 Так что в этой ситуации я не могу получить доступ к custom_var, он пуст.

Единственный способ, которым мне удалось обойти это, - создать собственный тип записи с именем, отличным от имени страницы.Теперь структура выглядит следующим образом:

Список: http://test.local/sample-list (страница)

Отдельный элемент: http://test.local/sample-list-item/whatever-111 (образец-списка-элемента - это пользовательский тип записи)

Я не могу создать пользовательский тип записи с тем же именем, что и имя страницы.

Итак, моя цель:

Список: http://test.local/sample-list

Отдельный элемент: http://test.local/sample-list/whatever-111

И custom_var будет 111

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Этот работал:

add_filter('generate_rewrite_rules', 'generate_rewrite_rules');

function generate_rewrite_rules($wp_rewrite) {
    $wp_rewrite->rules = array_merge(
        ['sample-list/[^/]*\D(\d+)/?$' => 'index.php?some_id=$matches[1]'],
        $wp_rewrite->rules
    );
}
0 голосов
/ 21 февраля 2019

Попробуйте добавить следующий код с кодом выше, вы можете прочитать полную документацию Wordpress Rewrite_API

function custom_rewrite_tag() {
  add_rewrite_tag('%custom_var%', '([^&]+)'); 
}
add_action('init', 'custom_rewrite_tag', 10, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...