get_template_part () triggers nicht innerhalb einer switch-statement aus, wenn die Vorlage WP_Query enthält

Ich habe eine Seitenvorlage mit einer bedingten statement, die get_template_part () verwendet, um eine andere Vorlage basierend auf einem ACF-Feldwert einzuholen. Der Code aus beiden Vorlagen-Teildateien funktioniert außerhalb der bedingten statement, aber nicht innerhalb der bedingten Schalteranweisung – dh wenn ich den Inhalt der beiden Vorlageteildateien direkt in die Hauptseitenvorlage einfüge, funktioniert der Code wie erwartet. Kann mir jemand erklären, warum das nicht funktioniert? Jede Hilfe sehr geschätzt!

Hauptvorlagencode:

   

In den von get_template_part () aufgerufenen Templates habe ich folgenden Code:

“Lautsprecher Vorlage”:

 <div class="page-wrap content-template-inner-page-speakers-php" style="background-image: url(); background-color: ;" id=""> 

Speaker Template Baby

'the_speakers', 'tax_query' => array( array( 'taxonomy' => 'speakers_taxonomies', 'terms' => 'keynote-speaker', 'field' => 'slug' ) ) ); $theKeynoteSpeakers = new WP_Query($args3); ?>
have_posts()) : $theKeynoteSpeakers->the_post(); ?>
<div class="speaker__image background-cover" style="background-image: url();">

See More
X
<div class="speaker__image background-cover" style="background-image: url();">
<img class="speaker__company-image" src="https://wordpress.stackexchange.com/questions/248315/get-template-part-not-firing-within-a-switch-statement-when-template-has-new-w/" alt="Company Logo">

<a href="https://wordpress.stackexchange.com/questions/248315/get-template-part-not-firing-within-a-switch-statement-when-template-has-new-w//speakers" class="b-button">See More

“Veranstaltungsvorlagen Teil”:

 <div class="page-wrap content-template-inner-page-agenda-php" style="background-image: url(); background-color: ;" id=""> 

Events Template Baby

'events', 'order' => 'ASC', 'orderby' => 'meta_value', 'meta_key' => 'event_start_time' ); $nykEvents = new WP_Query($args1); ?>
    have_posts()) : $nykEvents->the_post(); ?> slug; } ?> <li class="b-list__item l-grid l-grid--top agenda__item ">
    to

    post_title; if($eventSpeakerObject){ $eventSpeakerImage = get_field('speaker_profile_image', $eventSpeakerObject->ID); $eventSpeakerSubHeading = get_field('speaker_job_title', $eventSpeakerObject->ID); $eventSpeakerBio = get_field('speaker_bio', $eventSpeakerObject->ID); $eventSpeakerCompanyImage = get_field('speaker_company_logo', $eventSpeakerObject->ID); } ?>
    <div class="speaker__image background-cover" style="background-image: url();">

    See More
    X
    <div class="speaker__image background-cover" style="background-image: url();">
    <img class="speaker__company-image" src="https://wordpress.stackexchange.com/questions/248315/get-template-part-not-firing-within-a-switch-statement-when-template-has-new-w/" alt="Company Logo">

Solutions Collecting From Web of "get_template_part () triggers nicht innerhalb einer switch-statement aus, wenn die Vorlage WP_Query enthält"

Das Problem: Der Code räumt nach seinen Abfragen nie auf

Ihren Abfragen fehlen derzeit mehrere Dinge:

Wenn Sie entweder the_post oder setup_postdata , ändern Sie die globale $post Variable. Dies kann zu Problemen in jedem Code führen, der nach der Schleife ausgeführt wird, da der Postkontext nicht mehr der Post der Seite, sondern der letzte Post der Abfrageschleife ist.

Der Aufruf von wp_reset_postdata sollte das beheben, aber es muss nur aufgerufen werden, wenn die Abfrage Posts gefunden hat. Wenn dies nicht erfolgt, kann dies zu Problemen oder einer Verlangsamung bei geschachtelten Schleifen und anderem unerwartetem Verhalten führen.

Hier ist eine idealisierte WP_Query Schleife:

 $args = array( // .... ); $q = new \WP_Query( $args ); if ( $q->have_posts() ) { while( $q->have_posts() { $q->the_post(); // display post } wp_reset_postdata(); } else { echo 'no posts found'; }