it-swarm.com.de

WP_Query-Schleife innerhalb der WP_Query-Schleife

Ich versuche, eine benutzerdefinierte WP_Query-Schleife in einer anderen zu verwenden, um Daten aus der inneren Schleife unabhängig von der Hauptschleife anzuzeigen. Ich fand diese Lösung aber verstehe nicht wirklich, wie man es benutzt. Hier ist der Code, es funktioniert, aber die Hauptschleife generiert doppelte Beiträge.

<?php
// define the main query
$main_args = array(
    'post_type' => 'page',
    'post_parent' => '10',
);
// execute the main query
$the_main_loop = new WP_Query($main_args);
// go main query
if($the_main_loop->have_posts()) : while($the_main_loop->have_posts()) : $the_main_loop->the_post(); 
?> 
    <p>This is the content from the main loop</p>

    <?php
    // define the inner query
    $inner_args = array(
        'post_type' => 'page',
        'post_parent' => '20',
    );
    // execute the inner query
    $the_inner_loop = new WP_Query($inner_args);
    // go inner query
    if($the_inner_loop->have_posts()) : while($the_inner_loop->have_posts()) : $the_inner_loop->the_post(); 
    ?> 
        <p>This is the content from the inner loop</p>
    <?php 
    // end the inner loop, no reset
    endwhile; endif;
    ?> 

    <p>This is another content from the main loop</p>

<?php 
// end the main loop
endwhile; endif; wp_reset_postdata();
?>

Vielen Dank!

1
jjj

Es ist immer noch völlig unklar, was Sie tatsächlich tun möchten, aber laut diesem:

es funktioniert, aber die Hauptschleife generiert doppelte Beiträge

Ich kann Ihnen sagen, dass es Ausgabe erwartet wird.

Ihre "Haupt" -Schleife fragt ab und zeigt alle Seiten mit der übergeordneten Seiten-ID 10 an. Nehmen wir an, es gibt 10 Seiten, die Ihrer "Haupt" -Abfrage entsprechen. Dies bedeutet, dass Ihre Schleife 10 Zyklen durchläuft, wenn Sie sie so nennen möchten. Stellen Sie sich die Schleife als eine foreach-Schleife vor, da es sich im Wesentlichen nur um diese handelt ( aber nicht genau dieselbe ).

Jetzt fügen Sie in jedem Zyklus eine weitere Abfrage hinzu, die Seiten mit der übergeordneten ID 20 abfragt. Sagen wir, es gibt auch 10. Jeder Zyklus der "Haupt" -Schleife gibt also 10 Posts mit dem übergeordneten Post-Code von 20 aus, zehnmal, weil es 10 Seiten mit dem übergeordneten Post-Code von 10 gibt.

Sehr einfach, Sie haben:

// First cycle 
the_post(); // 1st page with parent 10
    // custom query which will display pages from parent 20
// End of first cycle and start of second cycle
the_post();  // 2nd page with parent 10
    // custom query which will display pages from parent 20
// End of second cycle and start of third cycle
the_post();  // 3rd page with parent 10
    // custom query which will display pages from parent 20
etc etc

Sie sollten Ihre zweite Abfrage außerhalb der Hauptabfrage durchführen, um sie zu trennen

$main_args = [
    'post_type' => 'page',
    'post_parent' => '10',
];
// execute the main query
$the_main_loop = new WP_Query($main_args);
// go main query
if($the_main_loop->have_posts()) { 
    while($the_main_loop->have_posts()) { 
    $the_main_loop->the_post(); 

        // Display your loop content

    } // endwhile
    wp_reset_postdata(); // VERY VERY IMPORTANT
}

// define the inner query
$inner_args = [
    'post_type' => 'page',
    'post_parent' => '20',
];
// execute the inner query
$the_inner_loop = new WP_Query($inner_args);
// go inner query
if($the_inner_loop->have_posts()) {
    while($the_inner_loop->have_posts()) {
    $the_inner_loop->the_post();

        // Display your loop content

    } // endwhile
    wp_reset_postdata(); // VERY VERY IMPORTANT
}
3
Pieter Goosen