Foreach-Loop-Breaks verwenden

Ich bin neu in WordPress und habe ein Problem mit “The Loop”. Ich habe 2 benutzerdefinierte Beitragstyp namens “Buch” und “Autor” .in Autor Beitragstyp Ich habe benutzerdefinierte Feld Kontrollkästchen, die zwischen Autor und Übersetzer wählen können. auch im Buchposttyp habe ich 2 Metaboxen, der Benutzer den Namen des Autors und Übersetzers von diesen wählen muss. Alle Metabox und benutzerdefinierten Post-Typ funktionieren gut, aber wenn ich sie aufrufen und die Werte der einzelnen Metabox verwenden möchte, habe ich ein Problem. Mein Code kann die Werte des Autors gut lesen, aber die Werte des Übersetzers zeigen nur den letzten Wert des Autors und ich kann nicht herausfinden, warum das passiert? Ich denke foreach ist das Problem. aber ich weiß nicht wie ich das lösen kann. Hier ist mein Code für single-book.php

 'book'); $loop = new WP_Query( $args ); while ( have_posts() ) : the_post(); // for reading author which choose from cheak box in each book pages. $post_id = get_the_ID(); $key = 'save-author-to-book'; $key2='save-trans-to-book'; $vals=get_post_meta($post_id, $key2, true); $values = get_post_meta( $post_id, $key, true ); $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); ?> echo '

نویسنده : '; foreach($values as $value){ $author=get_post($value); echo ''. $author->post_title .' ، ' ;} echo '

'; echo '

مترجم : '; foreach($vals as $val){ $trans=get_post($val); echo ''. $author->post_title.'، ';} echo '

';

Irgendeine Idee würde geschätzt werden.

Solutions Collecting From Web of "Foreach-Loop-Breaks verwenden"

Ich glaube, Ihr Problem ist mit $vals=get_post_meta($post_id, $key2, true);

Wenn Sie den Codex überprüfen, ist der letzte Parameter für get_post_meta, ob ein einzelner Wert oder ein Array von Werten zurückgegeben werden soll. Sie haben es auf true was bedeutet, dass nur ein Wert zurückgegeben wird.

Probiere es mit false (der Standard) sollte es funktionieren.

Ich kann Bynicolas Antwort nicht kommentieren, aber ich stimme ihm zu. Wenn ich Ihr Problem richtig verstanden habe, liegt das daran, dass Sie am Ende Folgendes verwenden:

 $vals=get_post_meta($post_id, $key2, true); $values = get_post_meta( $post_id, $key, true ); 

Wenn du true verwendest, aus dem Codex :

$ single (bool) (Optional) Gibt an, ob ein einzelner Wert zurückgegeben werden soll.

Rückgabe (gemischt) Wird ein Array sein, wenn $ single falsch ist. Wird der Wert des Metadatenfelds sein, wenn $ single wahr ist.

Sie können keine string , sondern nur arrays angeben. Wenn Sie also nicht ” false verwenden, funktioniert Ihr Code nicht.

Oder, wenn du nur das erste Ergebnis von post_meta , benutze true , aber warum benutzt du die foreach? Du brauchst es nicht, du kannst es einfach benutzen:

 if($value != '') { $author=get_post($value); echo ''.$author->post_title .' ، ' ; } 

Vorsicht in Zeile 11:

  $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); ?> echo '

نویسنده : ';

Benutzt du genau diesen Code? Da Sie die PHP-Syntax genau nach dem Erhalt von $feat_image , wird der Code mit der PHP-Syntax echo fortgesetzt.

Ich glaube, dass der Code wegen diesem kleinen bricht ?> Und die erste Schleife endet nie.