Passare e recuperare variabili di query in WordPress

31 gen 2011, 20:48:53
Visualizzazioni: 26.6K
Voti: 17

Ho due pagine autori, una mostra circa 5 post. Sto cercando di configurare un'altra pagina che mostrerà tutti i loro post. Ho creato un template chiamato moreauthorposts.php e sto cercando di passare la variabile dell'autore a questa pagina. Il problema è che se passo domain.com/more-author-posts?author=johndoe viene rimosso. Come posso recuperare questo valore? È possibile in WordPress? So che WP Rewrite sta modificando in qualche modo la struttura del mio URL, ma non sono sicuro.

Ho provato:

get_query_var('author')

e ho provato a leggere questo ma non ho avuto successo:

http://codex.wordpress.org/Query_Overview

Suggerimenti?

Grazie.

0
Tutte le risposte alla domanda 1
8
22

Sono quasi sicuro che author sia integrato, quindi usa qualcosa come author_more. Dovrai prima aggiungere quella variabile a query_vars. Esempio:

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

Poi nel tuo template more-author-posts.php chiamalo in questo modo:

if ( get_query_var( 'author_more' ) )
{
    // fai quello che devi fare
}

Aggiornamento

Questo funziona nel seguente esempio di URL/caso d'uso:

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

Ma se vuoi usarlo come URL elegante, devi aggiungere una regola di riscrittura:

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

Ora puoi usarlo così

http://example.com/more-author-posts/value
31 gen 2011 21:02:52
Commenti

Ok, ho aggiunto le variabili di query nel functions.php. Poi ho aggiunto l'altro codice ai miei post dell'autore. Quale sarebbe la struttura URL corretta per passarli? So che paged usa il formato /page/2 ma fare more-author-posts/more_author/johndoe non sembra funzionare?

codeisforeva codeisforeva
31 gen 2011 22:03:43

ho aggiornato la risposta

Bainternet Bainternet
31 gen 2011 22:32:53

Il problema è che non sto cercando di passare le variabili a index.php. Sto cercando di passarle al template personalizzato che ho sviluppato poiché è completamente diverso da index. Quindi se passo i valori a moreauthor.php?author_more=johndoe... non sembra funzionare. Sto facendo qualcosa di sbagliato qui?

codeisforeva codeisforeva
31 gen 2011 22:46:31

@בניית אתרים sembra una risposta molto chiara! @codeisforeva Non dovresti chiamare direttamente il file template, vero? index.php è semplicemente il file radice di WordPress, ogni regola di riscrittura dovrebbe passare da lì.

goldenapples goldenapples
1 feb 2011 00:20:09

Quindi non è possibile impostare un template personalizzato e passare variabili personalizzate in WordPress? Pensavo che questa sarebbe stata un'enorme limitazione della piattaforma.

codeisforeva codeisforeva
1 feb 2011 16:52:24

Fatto funzionare con index.php, grazie mille per l'aiuto. Sembra solo strano che non si possa fare con altri template.

codeisforeva codeisforeva
1 feb 2011 22:54:12

non proprio perché puoi gestire tutti i get attraverso un unico file index.php

Bainternet Bainternet
1 feb 2011 23:17:17

@codeisforeva: Il index.php nella regola di riscrittura è il index.php nella directory root di WordPress, non il index.php nel tuo file template. Puoi comunque scegliere quale template visualizzare, agganciandoti al filtro template_include.

Jan Fabry Jan Fabry
7 feb 2011 19:29:36
Mostra i restanti 3 commenti