Zählen Sie die Gesamtzahl der Post in der foreach-Schleife

Ich habe das folgende Skript (nur mit get_permalink ….) verwendet, um Beiträge von einem Post-Typ anzuzeigen, wo der Postautor ein zusätzliches Meta-Feld auf seiner Benutzerseite hat:

ID)) { while(the_repeater_field('races','user_' . $user->ID)) { $signed_up = get_sub_field('race_name', $post_object->ID); if($original_id == $signed_up->ID) { //original ID is the race_name post we are on $user_info = get_userdata($user->ID); $arg = array( 'post_type' => array ('members'), 'post_status' => array( 'publish'), 'posts_per_page' => 200, 'author' => $user_info->ID ); $arg_query = new WP_Query(); $arg_query->query( $arg ); echo $total = $arg_query->post_count; } else { } } } } ?> 

Während es funktionierte, die Titel der Beiträge aus dem Post-Typ der Mitglieder anzuzeigen, kann ich mich nicht dazu durchringen, diese Beiträge zu zählen. Es zeigt: 1 1 1 statt 3 und so weiter. Wie kann ich die foreach ändern, um richtig zu arbeiten?

Solutions Collecting From Web of "Zählen Sie die Gesamtzahl der Post in der foreach-Schleife"

Edit: Re-Lesen Sie Ihre Frage Ich bemerkte, dass ich einige Dinge gemischt haben, aber der Punkt bleibt, dass Sie diese separaten Abfragen in der Schleife durchgeführt werden, indem Sie Variablen innerhalb der Schleife verwenden, um eine umfassende Liste der Abfrage Argumente, die Sie erstellen kann eine Abfrage außerhalb der Schleife ausführen.

Ich habe leider keine Zeit, eine ausführlichere Antwort zu geben.


Ursprünglicher Beitrag: Sie erhalten 1 1 1 weil Sie für jeden Benutzer eine separate Abfrage durchführen.

Sie können diese Abfragen in einer Abfrage kombinieren und dann $arg_query->post_count wie Sie wollen. Verwenden Sie dazu die foreach-Schleife, um alle Autoren-IDs zu erhalten und sie in einem Array zu speichern. Nachdem die foreach-Schleife beendet ist, führen Sie die Abfrage mit den gespeicherten Autoren-IDs für den Autor arg durch.

Die WP_Query-Codex-Seite zeigt dieses grundlegende Beispiel für die Abfrage von Beiträgen mehrerer Autoren:

 $query = new WP_Query( 'author=2,6,17,38' ); 

BTW, warum verwenden Sie get_userdata() wenn Sie nur verwenden, um die Benutzer- ID , die Sie bereits haben?

Danke für die Ideen. Schließlich habe ich eine schnelle Lösung gefunden, die die richtigen Zahlen in dem Format zu liefern scheint, das ich brauche. Ich bin mir sicher, dass es eine sauberere Methode gibt, um Ergebnisse von einer Abfrage wie dieser zu erhalten, aber ich habe bisher nichts Ähnliches gesehen.

 < ?php // get users from user page $blogusers = get_users(); $i = 0; foreach ($blogusers as $user) { if(get_field('races','user_' . $user->ID)) { while(the_repeater_field('races','user_' . $user->ID)) { $signed_up = get_sub_field('race_name', $post_object->ID); if($original_id == $signed_up->ID) { //original ID is the race_name post we are on $arg = array( 'post_type' => array ('members'), 'post_status' => array( 'publish'), 'posts_per_page' => 200, 'author' => $user_info->ID ); $arg_query = new WP_Query(); $arg_query->query( $arg ); $i++; } else { } } } } if($i>0) { echo $i; } ?>