WP_Query schlägt trotz 1 Post fehl

Ich mache eine typische benutzerdefinierte Post-Abfrage mit Argumenten wie dieser:

array (size=4) 'post_type' => string 'custom_post_type' (length=15) 'post_status' => string 'publish' (length=7) 'posts_per_page' => int 5 'p' => string '2943' (length=4) 

Erstaunlicherweise, trotz der Tatsache, dass es einen Post gibt, der abgefragt wird (und es existiert), bekomme ich ein false in der Schleife für have_posts

Welches seltsame Phänomen ist dafür verantwortlich? Es gibt 1 Beitrag!

  $wp_query = new WP_Query( $args ); if ( have_posts() ) : //... while ( have_posts() ) : the_post(); //more dots ... dot dot dot ... endwhile; //... else: echo 'No stuff found ... dot dot dot'; endif; 

Solutions Collecting From Web of "WP_Query schlägt trotz 1 Post fehl"

Sehen Sie sich an, wie Sie eine Abfrage mit WP_Query richtig WP_Query .

  $args = array( 'post_type' => 'cameras', 'posts_per_page' => 5, ); $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { echo '
    '; while ( $the_query->have_posts() ) { $the_query->the_post(); echo '
  • ' . get_the_title() . '
  • '; } echo '
'; } else { // no posts found } /* Restore original Post Data */ wp_reset_postdata();

Sie sollten sich ansehen, wie Sie Ihren post_type registriert haben . Abgesehen davon, wie verwenden Sie Ihre Abfrage auf Ihrer Seite. Haben Sie eine Abfrage oder mehrere Abfragen. Wenn Sie mehrere Abfragen haben, können Probleme mit Ihrer Abfrage auftreten. Wie bereits erwähnt, überprüfen Sie Ihren post_status Ihres Posts.

Wenn Sie nur einen bestimmten Beitrag aufrufen müssen, können Sie Folgendes tun, nicht die anderen statementen für den Post-Typ zu verwenden

 $args = array( 'p' => 2943, ); $the_query = new WP_Query( $args ); 

In diesem Stadium ist es unmöglich, ein Problem festzustellen. Nur ein Tipp, spül deine Permalinks wieder aus

Versuchen Sie, have_posts() und the_post() mit dem have_posts() the_post() . Bearbeite deinen Code so:

 $wp_query = new WP_Query( $args ); if ( $wp_query->have_posts() ) : //... while ( $wp_query->have_posts() ) : $wp_query->the_post(); //more dots ... dot dot dot ... endwhile; //... else: echo 'No stuff found ... dot dot dot'; endif; 
 $wp_query = new WP_Query( $args ); if ( have_posts() ) : 

Wenn Sie dies in einer function oder einem anderen Code tun, ist Ihre $ wp_query nicht dieselbe $ wp_query, die die Haupt-Loop-functionen (wie have_posts ()) tatsächlich betrachten.

Die Haupt-Loop-functionen verwenden die globale $ wp_query-Instanz, die von WordPress für den Haupt-Loop generiert wird. Dieser ist wahrscheinlich leer für Ihren Fall.

Was Sie tun sollten, ist eher so:

 $my_custom_query = new WP_Query( $args ); if ( $my_custom_query->have_posts() ) : while ( $my_custom_query->have_posts() ) : $my_custom_query->the_post(); 

Und dann funktionieren Ihre verschiedenen Loop-functionen ordnungsgemäß, weil Sie nun the_post () von Ihrer benutzerdefinierten Abfrage laden.