Используя cpt и передайте переменную с помощью URL

#wordpress #custom-post-type #permalinks #wp-rewrite

Вопрос:

Я хочу создать удобную читаемую структуру постоянных ссылок для моего пользовательского типа сообщений (CPT). Мой CPT «фильм» имеет следующую запись перезаписи movie/movie_name" (все работает нормально).

Теперь я хочу добавить arg следующее: movie/movie_name/arg и использовать arg в моем файле шаблона в качестве переменной php. Но очевидно, что это приведет к не-найденной-странице. Как я могу достичь этой цели?

редактировать: я хочу, чтобы это было в УДОБНОМ формате URL, это означает, что я не хочу использовать GET для этого.

Ответ №1:

Вы можете передать это как movie/movie_name?movie_arg=movie_value . Он будет доступен с $_GET['movie_arg'] . Конечно, вам нужна дополнительная очистка для обработки этих данных.

Чтобы иметь возможность прочитать это в WordPress, добавьте параметры в query_vars фильтр

 function add_movie_arg_to_query_vars( $qvars ) {
    $qvars[] = 'movie_arg';
    return $qvars;
}
add_filter( 'query_vars', 'add_movie_arg_to_query_vars' );
 

Примечание: это не должно совпадать с зарезервированными параметрами запроса WordPress

Таким образом, он будет доступен в вашем шаблоне с get_query_var('movie_arg')

 print_r( get_query_var('movie_arg') ) // movie_value
 

Более подробная информация здесь

Комментарии:

1. Я должен иметь его в УДОБНОМ формате URL, это означает, что я не хочу использовать GET для этого.

2. Используйте Переменные Запроса. это в основном дружественная перепись $_GET. В примере Ihar ваш URL-адрес будет выглядеть примерно так: /movie/имя_фильма/movie_arg/your_arg

3. @SahriarSaikat я попытался запросить Vars, это не сработало.

4. @dede что именно не сработало? предоставьте более подробную информацию. Есть ли какая-либо ошибка PHP или что-то еще?