Przekazywanie i pobieranie zmiennych zapytań w wordpress


16

Mam dwie strony autorów, jedna wyświetla około 5 postów. Następnie próbuję skonfigurować inną stronę, na której będą znajdować się wszystkie ich posty. Utworzyłem szablon o nazwie moreauthorposts.php i próbuję przekazać zmienną autora na tę stronę. Problem polega na tym, że jeśli przejdę domenę.com/more-author-posts?author=johndoe zostanie rozebrany. Jak mogę odzyskać tę wartość? Czy jest to w ogóle możliwe w wordpress? Wiem, że WP Rewrite w jakiś sposób wykorzystuje moją strukturę URL, ale nie jestem pewien.

Próbowałem:

get_query_var('author')

i spróbowałem przeczytać to, ale nie miałem szczęścia:

http://codex.wordpress.org/Query_Overview

Propozycje?

Dzięki.

Odpowiedzi:


21

Jestem prawie pewien, że authorjest wbudowany, więc użyj czegoś takiego author_more. query_varsNajpierw musisz dodać tę zmienną . Przykład:

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

Następnie na more-author-posts.phpszablonie nazwij to tak:

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

Aktualizacja

Działa to w następującym przykładzie URl / przypadku użycia:

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

Ale jeśli chcesz użyć tego jako fantazyjnego URl, musisz dodać regułę przepisywania:

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

Teraz możesz używać tego w ten sposób

http://example.com/more-author-posts/value

Ok, więc dodałem zmienne zapytania do functions.php. Następnie dodałem drugi kod do moich kolejnych postów autora. Jaka byłaby poprawna struktura adresów URL, aby je przekazać? Wiem, że stronicowany używa formatu / page / 2, ale wydaje się, że robienie więcej postów-autorów / more_author / johndoe nie działa?
codeisforeva

zaktualizowałem odpowiedź
Bainternet,

Problem nie polega na tym, że nie próbuję przekazać vars do index.php. Próbuję przekazać je do niestandardowego szablonu, który opracowałem, ponieważ wygląda zupełnie inaczej niż indeks. Więc jeśli przekażę wartości do moreauthor.php? Autor_more = johndoe .. to nie działa. Robisz coś nie tak?
codeisforeva

@ בניית אתרים wygląda na bardzo jasną odpowiedź! @codeisforeva Nie powinieneś dzwonić bezpośrednio do pliku szablonu, prawda? index.php to tylko główny plik Wordpress, każda reguła przepisywania powinna tam przejść.
goldenapples

1
@codeisforeva: W index.phpregule przepisywania jest index.phpw katalogu głównym WordPress, a nie index.phpw pliku szablonu. Nadal możesz wybrać szablon, który ma być wyświetlany, zaczepiając się w template_includefiltrze.
Jan Fabry,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.