Transmiterea și primirea variabilelor query în WordPress

31 ian. 2011, 20:48:53
Vizualizări: 26.6K
Voturi: 17

Am două pagini de autori, una afișează aproximativ 5 postări. Apoi încerc să configurez o altă pagină care va conține toate postările lor. Am creat un șablon numit moreauthorposts.php și încerc să transmit variabila author către această pagină. Problema este că dacă trimit domain.com/more-author-posts?author=johndoe aceasta este eliminată. Cum pot recupera această valoare? Este măcar posibil în WordPress? Știu că WP Rewrite îmi modifică cumva structura URL-ului, doar că nu sunt sigur cum.

Am încercat:

get_query_var('author')

și am încercat să citesc acest document dar nu am avut succes:

http://codex.wordpress.org/Query_Overview

Sugestii?

Mulțumesc.

0
Toate răspunsurile la întrebare 1
8
22

Sunt aproape sigur că author este încorporat în WordPress, așa că folosește ceva de genul author_more. Va trebui mai întâi să adaugi acea variabilă la query_vars. Exemplu:

// adaugă `author_more` la variabilele de interogare
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

Apoi, în fișierul șablon more-author-posts.php, poți să o apelezi astfel:

if ( get_query_var( 'author_more' ) )
{
    // execută logica ta
}

Actualizare

Acest lucru funcționează în următorul exemplu de URL/caz de utilizare:

http://exemplu.ro/index.php?author_more=valoare

Dar dacă dorești să utilizezi acest lucru ca un URL prietenos, va trebui să adaugi o regulă de rescriere:

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

Acum poți să-l folosești astfel:

http://exemplu.ro/more-author-posts/valoare
31 ian. 2011 21:02:52
Comentarii

Bun, am adăugat variabilele de interogare în functions.php. Apoi am adăugat celălalt cod pentru postările suplimentare ale autorului. Care ar fi structura corectă a URL-ului pentru a le transmite? Știu că paged folosește formatul /page/2 dar încercarea cu more-author-posts/more_author/johndoe nu pare să funcționeze?

codeisforeva codeisforeva
31 ian. 2011 22:03:43

am actualizat răspunsul

Bainternet Bainternet
31 ian. 2011 22:32:53

Problema este că nu încerc să transmit variabilele către index.php. Încerc să le transmit către șablonul personalizat pe care l-am dezvoltat, deoarece arată complet diferit față de index. Deci dacă transmit valori către moreauthor.php?author_more=johndoe.. asta nu pare să funcționeze. Fac ceva greșit aici?

codeisforeva codeisforeva
31 ian. 2011 22:46:31

@בניית אתרים arată ca un răspuns foarte clar! @codeisforeva Nu ar trebui să apelezi direct fișierul șablon, nu-i așa? index.php este doar fișierul root al WordPress, fiecare regulă de rescriere ar trebui să treacă prin acesta.

goldenapples goldenapples
1 feb. 2011 00:20:09

Deci nu este posibil să configurezi un șablon personalizat și să îi transmiți variabile personalizate în WordPress? Aș crede că aceasta ar fi o limitare majoră a platformei.

codeisforeva codeisforeva
1 feb. 2011 16:52:24

Am reușit să funcționeze cu index.php, mulțumesc mult pentru ajutor. Doar mi se pare ciudat că nu poți face asta cu alte șabloane.

codeisforeva codeisforeva
1 feb. 2011 22:54:12

nu chiar, pentru că poți gestiona toate cererile GET printr-un singur fișier index.php

Bainternet Bainternet
1 feb. 2011 23:17:17

@codeisforeva: index.php din regula de rescriere este index.php din directorul rădăcină al WordPress, nu index.php din fișierul șablon. Poți alege în continuare ce șablon să fie afișat, prin conectarea la filtrul template_include.

Jan Fabry Jan Fabry
7 feb. 2011 19:29:36
Arată celelalte 3 comentarii