WordPress Alphabetisches Glossar schließen div in Schleife

schrieb dieses Stück Code, um ein alphabetisches Glossar zu erstellen, und es funktioniert, aber es gibt 1 Problem. Ich weiß nicht, wie ich eine Reihe von Posts mit demselben Anfangsbuchstaben beenden kann.

Dieser Code betrachtet den ersten Buchstaben des zweiten Wortes (das ist für mein Projekt) und dann erstellt er eine Überschrift mit diesem ersten Buchstaben und setzt alle übereinstimmenden Zeilen darunter. Aber danach möchte ich dieses Set mit einem

(und natürlich zuerst öffnen). Aber wenn ich das close div in meine Schleife setze, plaziert der Code hinter jeder Zeile ein

.

Also brauche ich etwas, das sagt: Schließe div nach der letzten Zeile mit dem passenden ersten Buchstaben. Und dann öffne ein neues div und mach es nochmal.

Ich hoffe du verstehst was ich brauche. Vielen Dank.

  name; $args = array( 'post_type' => $post_type, 'orderby' => 'title', 'order' => 'ASC', 'posts_per_page' => 20, ); query_posts($args); if (have_posts()) : $curr_letter = ''; while (have_posts()) : the_post(); $title = get_the_title(); $title_array = explode(' ', $title); $second_word = $title_array[1]; $this_letter = substr($second_word, 0, 1); if ($this_letter != $curr_letter) { $curr_letter = $this_letter; ?> <div id="sort-" class="alpha_title">  
<a href="https://wordpress.stackexchange.com/questions/110875/wordpress-alphabetical-glossary-close-div-in-loop/">

Solutions Collecting From Web of "WordPress Alphabetisches Glossar schließen div in Schleife"

Wenn Sie die Website durchsuchen, sind die meisten der “nth post different” -Fragen sehr eng mit dieser verbunden, und ehrlich gesagt ist dies mehr eine PHP + Logikfrage als eine WordPress-Frage.

 if (have_posts()) { $curr_letter = ''; echo '
'; while (have_posts()) { the_post(); $title = get_the_title(); $title_array = explode(' ', $title); $second_word = $title_array[1]; $this_letter = substr($second_word, 0, 1); if ($this_letter != $curr_letter) { if (!empty($curr_letter)) { echo '
'; } $curr_letter = $this_letter; ?>
< ?php echo $this_letter; ?>
< ?php } ?> < ?php echo $second_word; ?>< ?php } echo '
'; }

Verwenden Sie jedoch nicht query_posts . Es gibt tausend “Tutorials”, die es online empfehlen, einschließlich Teile des Codex, aber nicht verwenden.

Es sollte beachtet werden, dass die Ladezeit der Seite erhöht werden kann, wenn die Hauptabfrage auf einer Seite ersetzt wird. In Worst-Case-Szenarien wird die erforderliche Arbeitsmenge mehr als verdoppelt . Die function ist zwar einfach zu bedienen, aber auch später anfällig für Verwirrung und Probleme . Weitere Details finden Sie in der Anmerkung zu Einschränkungen.

http://codex.wordpress.org/Function_Reference/query_posts (Hervorhebung von mir)

Verwenden pre_get_posts stattdessen einen Filter auf pre_get_posts . In der functions.php Ihres Themas:

 function pregp_wpse_110875($qry) { if ($qry->is_main_query() && $qry->is_archive()) { $qry->set('posts_per_page',20); $qry->set('orderby','title'); $qry->set('order','ASC'); } } add_action('pre_get_posts','pregp_wpse_110875');