Übergeben und Abrufen von Abfragevariablen in WordPress

16

Ich habe zwei Autorenseiten, eine zeigt ungefähr 5 Beiträge an. Dann versuche ich, eine andere Seite einzurichten, die alle ihre Beiträge enthält. Ich habe eine Vorlage mit dem Namen moreauthorposts.php erstellt und versuche, die Autorenvariable an diese Seite zu übergeben. Das Problem ist, wenn ich domain.com/more-author-posts?author=johndoe übergebe, wird es abgestreift. Wie kann ich diesen Wert abrufen? Ist das überhaupt in WordPress möglich? Ich weiß, dass WP Rewrite meine URL-Struktur überträgt, aber ich bin mir nicht sicher.

Ich habe es versucht:

get_query_var('author')

und versuchte dies zu lesen, hatte aber kein Glück:

http://codex.wordpress.org/Query_Overview

Vorschläge?

Vielen Dank.

codeisforeva
quelle

Antworten:

21

Ich bin mir fast sicher, dass authordas eingebaut ist, also benutze sowas author_more. Sie müssen diese var query_varszuerst hinzufügen . Beispiel:

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

more-author-posts.phpRufen Sie es dann auf Ihrer Vorlage folgendermaßen auf:

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

Aktualisieren

Dies funktioniert im folgenden URI-Beispiel / Anwendungsfall:

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

Wenn Sie dies jedoch als ausgefallene URL verwenden möchten, müssen Sie eine Umschreiberegel hinzufügen:

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

Jetzt können Sie es so verwenden

http://example.com/more-author-posts/value
Bainternet
quelle
Ok, also habe ich die Abfragevariablen in die functions.php eingefügt. Fügte dann den anderen Code meinen mehr Autorenbeiträgen hinzu. Was wäre die richtige URL-Struktur, um diese durchzuleiten? Ich weiß, dass die Seite das Format / page / 2 verwendet, aber das Ausführen von more-author-posts / more_author / johndoe scheint nicht zu funktionieren.
Codeisforeva
Ich habe die Antwort aktualisiert
Bainternet
Das Problem ist, dass ich nicht versuche, die Variablen an index.php zu übergeben. Ich versuche, sie an die benutzerdefinierte Vorlage zu übergeben, die ich entwickelt habe, da sie ganz anders aussieht als der Index. Also, wenn ich Werte an moreauthor.php übergebe? Author_more = johndoe .. das scheint nicht zu funktionieren. Hier etwas falsch machen?
Codeisforeva
@ בניית אתרים sieht nach einer sehr klaren Antwort aus! @codeisforeva Sie sollten die Vorlagendatei nicht direkt aufrufen, oder? index.php ist nur die Root-Datei von WordPress, jede Rewrite-Regel sollte dort durchlaufen werden.
Goldenapples
1
@codeisforeva: Die index.phpin der Umschreiberegel ist das index.phpim Stammverzeichnis von WordPress, nicht das index.phpin Ihrer Vorlagendatei. Sie können weiterhin auswählen, welche Vorlage angezeigt werden soll, indem Sie sich in den template_includeFilter einhängen .
Jan Fabry