it-swarm.com.de

get_query_var ('paged') gibt immer leer zurück

Stellen Sie dies auf, nachdem Sie eine Mauer für mögliche Lösungen getroffen haben.

Besitzen Sie eine Website mit einigen benutzerdefinierten Beitragstypen und zugehörigen benutzerdefinierten Taxonomien. Zur Vereinfachung verwende ich eine einheitliche taxonomy.php-Vorlage.

Innerhalb dieser Vorlage gibt es drei Schleifen. Ich möchte, dass sie alle auf der ersten Seite erscheinen, danach nur noch die dritte Schleife. Ich verstehe, wie das mit is_paged() funktioniert, aber es gibt ein größeres Problem, das ich einfach nicht lösen kann.

In meinen $args habe ich $paged von aufgenommen

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;     

Aber $paged gibt immer 1 zurück, egal auf welcher Seite ich mich befinde. Wenn ich einen Straight mache

    get_query_var('paged')

Dann wird nichts zurückgegeben, egal ob ich mich auf der ersten, zweiten, dritten oder etc Seite befinde.

Ich habe gelesen, dass Sie alle Loops zurücksetzen müssen, damit dies funktioniert, und das ist eine Praxis, die ich immer befolgt habe.

Ich werde hier nicht die ganze Seite aufnehmen, da dies eine ziemlich lange und komplexe Taxonomie ist. Stattdessen zeige ich den Grundaufbau der beiden Loops.

HINWEIS: Ich kann pre_get_posts nicht für diese Seite verwenden, da dies alle Schleifen betrifft. Für jede dieser Schleifen gelten separate posts_per_page-Anforderungen und andere Aspekte, die separat gehalten werden müssen.

Am oberen Rand der Vorlage habe ich

    //this present duplication
        $do_not_duplicate = array();

        global $wp_query;
        $term = $wp_query->queried_object;

Und ich habe meine Schleife nach meinen Argumenten mit aufgebaut

while ($new_query->have_posts()) : $new_query->the_post();

Die dritte Schleife, die ich auslagern möchte, hat diesen Code in der Nähe

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;                                 
                $args=array(
                    'posts_per_page' => $total_posts,
                    'post__not_in' => array_merge($do_not_duplicate, $unwanted_post_ids ),
                    'paged' => $paged,
                    'tax_query' => array(
                            array(
                                'taxonomy'  => $term->taxonomy,
                                'field'     => 'slug',
                                'terms'     => $term->slug,
                                )
                            )
                    );

                // Re-run the query with the new arguments
                query_posts( $args );

Ich habe wp_query anstelle von query_posts verwendet, aber für meine letzten Versuche war das das, was ich dort hatte. Würde es vorziehen, es zurück zu ändern.

Irgendwelche Ideen?

3
Ashkas

Haben Sie den Parameter "paged" in der URL der Seite (n), für die Sie "get_query_var" verwenden möchten? Soweit ich weiß, gibt get_query_var ("paged") explizit den Wert des URL-Parameters zurück, sodass Sie eine URL wie diese benötigen, damit dies funktioniert:

/?paged=7

Alternativ können Sie den URL-Parameter mit direktem PHP lesen:

$_GET['paged']
1
Steve Claridge

Sie sollten in der Lage sein, dies direkt von der Hauptvariablen $wp_query zu übernehmen. Sie könnten eine print_r() ausführen und nach den verschiedenen Argumenten suchen, die Sie benötigen, z. B. paged, posts_per_page etc usw. Welche Informationen sehen Sie dabei in Ihrer Vorlage?

0
Dan