Создание пользовательских URL-адресов в WordPress с помощью add_query_var - PullRequest
0 голосов
/ 25 февраля 2019

У меня проблема с add_query_args при генерации URL на моем сайте.У меня есть страница с подробной информацией о продукте с информацией.Я создал несколько расширенных пользовательских полей (ACF), чтобы различать некоторые типы этого продукта.Тип - это поле повторителя в ACF, поэтому я могу добавить больше типов к одному продукту.

Поэтому я сначала отображаю общую информацию из этого поста, а затем отображаю (в цикле) эти поля типа ACF со ссылкой:

[product]

  • Тип 1 (подробнее)
  • Тип 2 (подробнее)
  • Тип 3 (подробнее)

Я также создал пустой пост / страницу сslug: more_info_page и шаблон, на котором я буду отображать всю подробную информацию для этого поста с этим одним типом.

(дополнительная информация) должна указывать на эту страницу с идентификатором поста и номером типа ACF,В цикле у меня есть индекс, поэтому число там.С этим номером я могу получить информацию из поля ACF (надеюсь).

Насколько мне известно в данный момент, я могу создать URL-адрес, например:

$mylink = esc_url( 
    add_query_arg( array (

        'post_id' => $post->ID, 
        'type'    => $type_idx,

    ), site_url( '/more_info_page/' ) 
));

<a href="<?php echo $mylink; ?>">more info</a>

Я действительно получаю такие ссылки, как:

/more_info_page/?post_id=300&type=0

/more_info_page/?post_id=300&type=1

/more_info_page/?post_id=300&type=2

Ссылки есть, и первая действительно открывает нужную страницу шаблона, в которой я могу видеть варианты запросов.Но ... другие ссылки не ссылаются на нужную страницу.URL-адрес такой же, как и первый, отличается только номер типа.Но он не будет отображать / загружать мою / more_info_page, как первая ссылка.

Я не имею понятия, что идет не так.Я неправильно использую add_query_arg?

1 Ответ

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

Я должен был включить переменные в functions.php, например:

// Add custom query vars
add_filter( 'query_vars', 'my_query_vars', 10, 1 );

function my_query_vars($vars) {
    $vars[] = 'type';

    return $vars;
} 

И имя не было уникальным в моем случае, поэтому мне пришлось изменить имя тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...