Abfrage nur die Posts mit einem Post-Format von “Audio”

Ich versuche nur die Posts abzufragen, die ein Post-Format von audio . Ich bin mir ziemlich sicher, dass ich das falsch mache. Kann ich Hilfe bekommen?

   
query('post-format-audio'.'&paged='.$paged) ?>
<article id="post-"> <time datetime="">

<a href="https://wordpress.stackexchange.com/questions/154348/query-only-the-posts-with-a-post-format-of-audio/" rel="bookmark" title="View emails and comment on this episode.">View emails and comment on this episode

Solutions Collecting From Web of "Abfrage nur die Posts mit einem Post-Format von “Audio”"

Bevor wir fortfahren, muss ich Folgendes hervorheben:

  $i=1; $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(); $wp_query -> query('post-format-audio'.'&paged='.$paged) 

Dies ist genau das gleiche wie:

 query_posts( 'post-format-audio'.'&paged='.$paged ); 

Was ist schrecklich. Wenn Leute davon abraten, query_posts , ist nicht nur die function schlecht, sondern auch was sie tut.

Zum Glück hat Ihnen jemand von WP_Query erzählt, aber sie haben den Job nicht beendet.

So sollte Ihre Abfrage-Schleife aussehen:

 $args = array( 'post_format' => 'post-format-audio' ); $q = new WP_Query( $args ); if ( $q->have_posts() ) { while( $q->have_posts() ) { $q->the_post(); the_title(); // etc } wp_reset_postdata(); // clean up after ourselves } 

Der wichtige Teil ist, dass Post-Formate intern als eine benutzerdefinierte Taxonomie mit dem Taxonomy-Namen ‘post_format’ gespeichert werden.

Aber selbst das ist schlecht!

Ich habe in Ihrem ursprünglichen Code gesehen, dass Sie die ursprüngliche Hauptabfrage vollständig vercasting (ein weiterer Grund, dass query_posts schrecklich ist). Was Sie stattdessen hätten tun sollen, ist der pre_get_posts Filter, um die Hauptabfrage zu ändern, bevor sie ausgeführt wird, so dass Sie sie nicht pre_get_posts müssen und Zeit verschwenden und Ihre Seite verlangsamen müssen. Auf diese Weise erhalten Sie auch alle Seitenumbrüche und andere Dinge, die Core kostenlos anbietet.

Wenn dies Ihre Startseite ist, können Sie Folgendes tun:

 function audio_only( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_format', 'post-format-audio' ); } } add_action( 'pre_get_posts', 'audio_only' ); 

In einem Plugin oder in der functions.php Ihre Homepage nur Posts mit dem Audio-Post-Format an. Sie können einzelne Termarchive, Suchen, RSS-Feeds usw. damit überschreiben, wo auch immer eine Hauptschleife ist.

Aber das ist immer noch nicht der beste Weg, dies zu tun. WordPress stellt Ihnen automatisch ein Post-Format-Archiv zur Verfügung! Sie können sogar eine spezielle Vorlagendatei dafür verwenden. Es ist also nicht nötig, ein Audio-Format-Archiv zu erstellen, da ist bereits eines vorhanden

Weiterführende Literatur

  • Sie wissen nicht, Frage von Andrew Nacin

Letzte Anmerkungen

  • echo do_shortcode("$myvalue"); ist verschwenderisch, die Anführungszeichen sind nicht erforderlich, benutze echo do_shortcode( $myvalue ); Stattdessen ist es ein wenig schneller zu tippen und für Redakteure und Code-Informationen freundlicher
  • Ich weiß, dass der Kodex es benutzt, aber if(): while() : the_post(); dich nicht um if(): while() : the_post(); Verwenden Sie stattdessen Klammerklammern {} und verschieben Sie sie in ihre eigenen Zeilen. 1 statement / Befehl pro Zeile Wiederum ist es einfacher zu lesen und viel besser für automatisierte Tools und Editoren, und wir brauchen alle die Hilfe, die wir bekommen können, damit wir uns auf die wichtigen Dinge konzentrieren können
  • Alle diese Eckweitenelemente können entfernt und durch mehrere CSS-Hintergründe, border-radius oder :after und :before css selectors ersetzt werden