Pasar y recuperar variables de consulta en WordPress

16

Tengo dos páginas de autores, una muestra alrededor de 5 publicaciones. Entonces estoy tratando de configurar otra página que será todas sus publicaciones. He creado una plantilla llamada moreauthorposts.php y estoy tratando de pasar la variable de autor a esta página. El problema es que si paso domain.com/more-author-posts?author=johndoe se elimina. ¿Cómo puedo recuperar este valor? ¿Es esto posible en WordPress? Sé que WP Rewrite está pirateando mi estructura de URL de alguna manera, simplemente no estoy seguro.

He intentado:

get_query_var('author')

e intenté leer esto pero no tuve suerte:

http://codex.wordpress.org/Query_Overview

Sugerencias?

Gracias.

codeisforeva
fuente

Respuestas:

21

Estoy casi seguro de que authorestá incorporado, así que usa algo como author_more. Tendrá que agregar esa var a query_varsprimero. Ejemplo:

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

Luego, en su more-author-posts.phpplantilla, llámelo así:

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

Actualizar

Esto funciona en el siguiente ejemplo de URl / caso de uso:

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

Pero si desea utilizar esto como URL elegante, debe agregar una regla de reescritura:

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

Ahora puedes usarlo así

http://example.com/more-author-posts/value
Bainternet
fuente
Ok, así que agregué los vars de consulta en functions.php. Luego agregué el otro código a mis publicaciones más de autor. ¿Cuál sería la estructura de URL correcta para pasarlos? Sé que paginado usa el formato de / page / 2 pero hacer más-author-posts / more_author / johndoe ¿no parece estar funcionando?
codeisforeva
Actualicé
El problema es que no estoy tratando de pasar los vars a index.php. Estoy tratando de pasarlos a la plantilla personalizada que he desarrollado, ya que se ve completamente diferente del índice. Entonces, si paso valores a moreauthor.php? Author_more = johndoe ... eso no parece funcionar. ¿Haciendo algo mal aquí?
codeisforeva
¡@ בניית אתרים parece una respuesta muy clara! @codeisforeva No debería llamar al archivo de plantilla directamente, ¿verdad? index.php es solo el archivo raíz de wordpress, cada regla de reescritura debería pasar por allí.
goldenapples
1
@codeisforeva: La index.phpregla de reescritura está index.phpen el directorio raíz de WordPress, no index.phpen el archivo de plantilla. Aún puede elegir qué plantilla debe mostrarse, enganchándose al template_includefiltro.
Jan Fabry