Как настроить rewrite rule для WordPress?

Ссылка скопирована
0 ответов

На сайте есть кастомный тип записей team, в нем есть записи.
Нужно создать дополнительную страницу, которая использует данные из кастомного типа,
где post slug = GET-параметр в новом пути

Файл-обработчик страницы single-vcard.php, лежит в корне теме.

Путь
site.ru/vcard/ivan-ivanov/
vcard – статическая часть url
ivan-ivanov – GET-параметр

После добавления кода в functions.php и обновления постоянных ссылок через админку не передаются значения GET-параметра employee_id.

Вопросы:
1. Как сократить путь в add_rewrite_rule(), чтобы не писать путь от корня сайта?
2. Почему не передаются значения GET-параметра employee_id ?
3. Почему не подгружаются стандартные функции WordPress в подключаемом файле?
Нужно принудительно require wp_core.php прописать?

Код

add_action('init', function(){     add_rewrite_rule(         '^vcard/([a-zA-Z0-9-_]+)/?',         'wp-content/themes/main_theme/single-vcard.php?employee_id=$matches[1]',         'top'     ); });  function prefix_register_query_var( $vars ) {     $vars[] = 'employee_id';          return $vars; }  add_filter( 'query_vars', 'prefix_register_query_var' );

add_action('init', function(){ add_rewrite_rule( '^vcard/([a-zA-Z0-9-_]+)/?', 'wp-content/themes/main_theme/single-vcard.php?employee_id=$matches[1]', 'top' ); }); function prefix_register_query_var( $vars ) { $vars[] = 'employee_id'; return $vars; } add_filter( 'query_vars', 'prefix_register_query_var' );

Результат ($_GET)

Как настроить rewrite rule для WordPress?

Дополнительно:

ЕМНИП оно и так должно работать, если vcard таки кастомный тип поста и при обычных правилах рерайта, правда будет получаться не emplyee_id, а post_slug в глобальном WP_Query, и выполняться single-{post_name}.php при наличии

а функции не подключаются потому что запрос идёт мимо WP

  • IvanU7n, vcard не кастомный тип поста.
    Смена названия файла поможет?

    При rewrite нужно подключать wp core? Не будет ли зацикливания?

  • Илья Петров, в таком случае лучше переименовать, т.к. может ввести в заблуждение, и использовать другой механизм расписанный в комментариях к документации на add_rewite_tag()
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно