Passando e recuperando vars de consulta no wordpress

16

Eu tenho duas páginas de autores, uma exibe cerca de 5 postagens. Então, estou tentando configurar outra página que será todas as postagens deles. Eu criei um modelo chamado moreauthorposts.php e estou tentando passar a variável author para esta página. O problema é que se eu passar domain.com/more-author-posts?author=johndoe, ele será removido. Como posso recuperar esse valor? Isso é possível no wordpress? Eu sei que o WP Rewrite está bloqueando minha estrutura de URL de alguma forma, mas não tenho certeza.

Eu tentei:

get_query_var('author')

e tentei ler isso, mas não teve sorte:

http://codex.wordpress.org/Query_Overview

Sugestões?

Obrigado.

codeisforeva
fonte

Respostas:

21

Tenho quase certeza de que authorestá embutido, então use algo como author_more. Você precisará adicionar esse var ao query_varsprimeiro. Exemplo:

// add `author_more` to query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

Em seguida, no seu more-author-posts.phpmodelo, chame-o assim:

if ( get_query_var( 'author_more' ) )
{
    // do your stuff
}

Atualizar

Isso funciona no seguinte exemplo / caso de uso de URl:

http://example.com/index.php?author_more=value

Mas se você quiser usar isso como URl sofisticado, precisará adicionar uma regra de reescrita:

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'
    );
}

Agora você pode usá-lo assim

http://example.com/more-author-posts/value
Bainternet
fonte
Ok, então eu adicionei a consulta vars no functions.php. Em seguida, adicionei o outro código às minhas postagens de mais autores. Qual seria a estrutura de URL correta para passar essas informações? Eu sei que paginado usa o formato de / page / 2, mas fazer more-author-posts / more_author / johndoe não parece estar funcionando?
codeisforeva
Eu atualizei a resposta
Bainternet 31/01
O problema é que não estou tentando passar os vars para index.php. Estou tentando passá-los para o modelo personalizado que desenvolvi, pois parece completamente diferente do índice. Portanto, se eu passar valores para moreauthor.php? Author_more = johndoe .. isso parece não funcionar. Está fazendo algo errado aqui?
codeisforeva
@ בניית אתרים parece uma resposta muito clara! @codeisforeva Você não deveria chamar o arquivo de modelo diretamente, deveria? index.php é apenas o arquivo raiz do wordpress, todas as regras de reescrita devem passar por lá.
goldenapples
1
@ codeisforeva: A index.phpregra de reescrita está index.phpno diretório raiz do WordPress, não index.phpno arquivo de modelo. Você ainda pode escolher qual modelo deve ser exibido, conectando-o ao template_includefiltro.
Jan Fabry