Pasando y recuperando variables de consulta en WordPress

31 ene 2011, 20:48:53
Vistas: 26.6K
Votos: 17

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

He intentado:

get_query_var('author')

y he intentado leer esto pero no tuve suerte:

http://codex.wordpress.org/Query_Overview

¿Sugerencias?

Gracias.

0
Todas las respuestas a la pregunta 1
8
22

Estoy casi seguro de que author está integrado, así que usa algo como author_more. Primero necesitarás agregar esa variable a query_vars. Ejemplo:

// añadir `author_more` a las variables de consulta
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

Luego, en tu plantilla more-author-posts.php llámalo así:

if ( get_query_var( 'author_more' ) )
{
    // haz lo que necesites
}

Actualización

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

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

Pero si quieres usar esto como una URL amigable, necesitas 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/valor
31 ene 2011 21:02:52
Comentarios

Ok, agregué las variables de consulta en el functions.php. Luego añadí el otro código a mis posts de más autores. ¿Cuál sería la estructura de URL correcta para pasarlos? Sé que paged usa el formato /page/2 pero hacer more-author-posts/more_author/johndoe no parece estar funcionando.

codeisforeva codeisforeva
31 ene 2011 22:03:43

actualicé la respuesta

Bainternet Bainternet
31 ene 2011 22:32:53

El problema es que no estoy intentando pasar las variables a index.php. Estoy intentando pasarlas a la plantilla personalizada que he desarrollado, ya que se ve completamente diferente a index. Así que si paso valores a moreauthor.php?author_more=johndoe... eso no parece funcionar. ¿Estoy haciendo algo mal aquí?

codeisforeva codeisforeva
31 ene 2011 22:46:31

@בניית אתרים ¡parece una respuesta muy clara! @codeisforeva No deberías estar llamando al archivo de plantilla directamente, ¿verdad? index.php es solo el archivo raíz de WordPress, cada regla de reescritura debería pasar por ahí.

goldenapples goldenapples
1 feb 2011 00:20:09

¿Entonces no es posible configurar una plantilla personalizada y pasar variables personalizadas a ella en WordPress? Pensaría que esta sería una gran limitación de la plataforma.

codeisforeva codeisforeva
1 feb 2011 16:52:24

Lo conseguí funcionar con index.php, muchas gracias por la ayuda. Simplemente parece extraño que no puedas hacer esto con otras plantillas.

codeisforeva codeisforeva
1 feb 2011 22:54:12

no realmente porque puedes manejar todas las solicitudes GET a través de un solo archivo index.php

Bainternet Bainternet
1 feb 2011 23:17:17

@codeisforeva: El index.php en la regla de reescritura es el index.php en el directorio raíz de WordPress, no el index.php en tu archivo de plantilla. Todavía puedes elegir qué plantilla debe mostrarse, enganchándote al filtro template_include.

Jan Fabry Jan Fabry
7 feb 2011 19:29:36
Mostrar los 3 comentarios restantes