WP_Query pentru postare personalizată nu afișează conținut, bucle multiple și get_template_part

28 aug. 2014, 14:16:39
Vizualizări: 17K
Voturi: 0

Am probleme cu afișarea testimonialelor mele. Pe page.php am o secțiune pentru testimoniale. Am o buclă care preia conținutul pentru page.php, și apoi un get_template_part('content', 'testimonials') pentru a obține bucla de testimoniale.

<div class="grid_12 omega clearfix">

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <h1><?php the_title(); ?></h1>
        <p><?php the_content(); ?></p>
        <hr>

    <?php endwhile; else : ?>

        <p>Nu există postări :( </p>

    <?php endif; ?>

</div>

<?php get_template_part( 'content', 'testimonials' ); ?>

Deci bucla mea principală arată ca mai sus ^^. Bucla pentru testimoniale arată astfel în content-testimonials.php:

<?php 

    $args = array(
        'post_type' => 'testimonials',
        'posts_per_page' => 1,
        'orderby' => 'rand'
    );

    $the_query = new WP_Query( $args );

?>

<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

    <div class="testimonial push_2 grid_10 clearfix">
        <blockquote>&ldquo;<?php the_field( 'testimonial' ); ?>&rdquo;</blockquote>
        <cite>&mdash;<?php the_field( 'name' ); ?></cite>
    </div>

<?php endwhile; else : ?>

    <p>Nu există testimoniale :( </p>

<?php endif; ?>

Sunt relativ nou în WordPress și nu văd ce lipsește, am verificat în zona de administrare că există testimoniale, am editat câmpul personalizat să se afișeze dacă tipul postării este egal cu testimonial, dar tot nu reușesc să înțeleg de ce nu se încarcă.

Aștept cu interes răspunsurile voastre, mulțumesc anticipat!

0
Toate răspunsurile la întrebare 1
6

Cred că ai uitat să verifici dacă $the_query are postări.

<?php

    $args = array(
        'post_type' => 'testimonials',
        'posts_per_page' => 1,
        'orderby' => 'rand'
    );

    $the_query = new WP_Query( $args );

?>

<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

    <div class="testimonial push_2 grid_10 clearfix">
        <blockquote>&ldquo;<?php the_field( 'testimonial' ); ?>&rdquo;</blockquote>
        <cite>&mdash;<?php the_field( 'name' ); ?></cite>
    </div>

<?php endwhile; else : ?>

    <p>Nu există recomandări :( </p>

<?php endif;
wp_reset_postdata(); ?>

Și nu uita să resetezi datele postării dacă rulezi mai multe interogări pe o pagină.

28 aug. 2014 14:20:36
Comentarii

Superb! Mulțumesc frumos! Ce pacoste, am ratat cel mai simplu lucru. A funcționat perfect!

Jake Gabb Jake Gabb
28 aug. 2014 14:22:49

Asigură-te că resetezi și postdata la fiecare interogare, dacă rulezi mai multe interogări pe o pagină. cu wp_reset_postdata(); Am actualizat răspunsul meu cu această informație.

Robert hue Robert hue
28 aug. 2014 14:24:07

@JakeGabb nu uita să accepți acest răspuns :-). Pentru informații, verifică pagina [tour]

Pieter Goosen Pieter Goosen
28 aug. 2014 14:24:46

Nu am uitat ;), dar mi s-a spus că trebuie să aștept 9 minute :'(

Jake Gabb Jake Gabb
28 aug. 2014 14:25:56

@JakeGabb ah da, restricțiile pentru utilizatorii noi, am uitat de asta, scuze. Apropo, Bine ai venit pe WPSE.

Pieter Goosen Pieter Goosen
28 aug. 2014 14:48:10

Bine ai venit pe WPSE @JakeGabb ;)

Robert hue Robert hue
28 aug. 2014 14:59:17
Arată celelalte 1 comentarii