Передача и получение параметров запроса в WordPress
У меня есть две страницы авторов, одна отображает около 5 записей. Затем я пытаюсь настроить другую страницу, которая будет показывать все их записи. Я создал шаблон под названием moreauthorposts.php и пытаюсь передать переменную автора на эту страницу. Проблема в том, что если я передаю domain.com/more-author-posts?author=johndoe, она удаляется. Как я могу получить это значение? Возможно ли это вообще в WordPress? Я знаю, что WP Rewrite как-то меняет структуру моего URL, просто не уверен как именно.
Я пробовал:
get_query_var('author')
и пытался разобраться с этим, но безуспешно:
http://codex.wordpress.org/Query_Overview
Есть предложения?
Спасибо.

Я почти уверен, что author
является встроенным, поэтому используйте что-то вроде author_more
. Сначала вам нужно добавить эту переменную в query_vars
. Пример:
// добавляем `author_more` к query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
global $wp;
$wp->add_query_var( 'author_more' );
}
Затем в вашем шаблоне more-author-posts.php
вызывайте её так:
if ( get_query_var( 'author_more' ) )
{
// делаем что нужно
}
Обновление
Это работает в следующем примере URL/варианте использования:
http://example.com/index.php?author_more=value
Но если вы хотите использовать это как "красивый" URL, вам нужно добавить правило перезаписи:
add_action('init','add_author_more_rewrite_rule');
function add_author_more_rewrite_rule()
{
add_rewrite_rule(
'more-author-posts/(\d*)$',
'index.php?author_more=$matches[1]',
'top'
);
}
Теперь вы можете использовать это так:
http://example.com/more-author-posts/value

Хорошо, я добавил query vars в functions.php. Затем добавил другой код в мои дополнительные посты автора. Какой должна быть правильная структура URL для передачи этих параметров? Я знаю, что paged использует формат /page/2, но попытка использовать more-author-posts/more_author/johndoe, кажется, не работает?

Проблема в том, что я не пытаюсь передать переменные в index.php. Я пытаюсь передать их в пользовательский шаблон, который я разработал, так как он выглядит совершенно иначе, чем index. Поэтому если я передаю значения в moreauthor.php?author_more=johndoe... это, кажется, не работает. Я что-то делаю не так?

@בניית אתרים выглядит очень понятным ответом! @codeisforeva Разве вы должны вызывать файл шаблона напрямую? index.php — это всего лишь корневой файл WordPress, все правила перезаписи должны проходить через него.

Значит, в WordPress невозможно настроить пользовательский шаблон и передавать в него свои переменные? Кажется, это было бы серьезным ограничением платформы.

Получилось сделать через index.php, большое спасибо за помощь. Просто странно, что это нельзя сделать с другими шаблонами.

не совсем, потому что вы можете управлять всеми GET-запросами через один файл index.php
