PHP zeigt falsche benutzerdefinierte Taxonomiebilder an

Ich verwende das Taxonomy Images-Plugin , um zu versuchen, die Kategoriebilder für benutzerdefinierte Kategorien auf einer Seite einzublenden, auf der alle Kategorien meiner Website angezeigt werden. Aus irgendeinem Grund gibt dieser Code die richtigen Namen und Beschreibungen aus, zeigt jedoch nur ein Kategorienbild an.

Ich möchte, dass die Bilder die functionen der anderen Kategorie ausführen, mit den entsprechenden Daten für jede Kategorie auffüllen und alle Kategorien auf der Seite anzeigen. Wenn ich echo wp_get_attachment_image( $imgs[$id], 'thumbnail' ); Es veröffentlicht alle Bilder, aber wenn ich das von echo ändere, um es zu einer Variable zu machen, zeigt es nur ein Bild an.

 $imgs = get_option( 'taxonomy_image_plugin' ); $categories = get_terms('portfolio_category', array('orderby' => 'id', 'hide_empty' => 0)); foreach ( $categories as $category ) { $id = $category->term_id; $img = wp_get_attachment_image( $imgs[$id], 'thumbnail' ); } for($i=0; $i<count($categories); $i++) { echo('

'.$categories[$i]->name.'

'); echo($img); echo('

'.$categories[$i]->description.'

'); }

Ich denke, dass ich nur verwirrt bin, wie man einen Zähler wie [$i] hinzufügt, so dass dieser Code die richtigen Kategoriebilder ausgibt. Jede Hilfe würde sehr geschätzt werden.

Solutions Collecting From Web of "PHP zeigt falsche benutzerdefinierte Taxonomiebilder an"

Ich denke (zumindest teilweise) das Problem ist, dass Sie eine verschachtelte Schleife haben, wo Sie nicht wirklich eine brauchen.

Die Ausgabe von get_terms() ist ein Array von Objekten . Also sollte $categories ein Array von Objekten sein.

Sie durchlaufen dieses Array von Objekten hier:

 foreach ( $categories as $category ) { $id = $category->term_id; $img = wp_get_attachment_image( $imgs[$id], 'thumbnail' ); } 

Das Problem ist, dass Sie diese Schleife schließen und dann ein zweites Mal durch $categories :

 for($i=0; $i'.$categories[$i]->name.''); echo($img); echo('

'.$categories[$i]->description.'

'); }

Das Problem dabei ist, dass $id und $img ihren Wert basierend auf dem letzten Objekt in $categories behalten.

Ich würde empfehlen, die zweite Schleife loszuwerden und alles in Ihrer ursprünglichen foreach Schleife zu tun:

 foreach ( $categories as $category ) { // Set ID and IMG $id = $category->term_id; $img = wp_get_attachment_image( $imgs[$id], 'thumbnail' ); // Output markup echo('

'.$category->name.'

'); echo($img); echo('

'.$category->description.'

'); }

Das sollte die Probleme mit nicht synchronem Looping beheben, obwohl ich mir über $img nicht ganz sicher bin, da ich mit dem verwendeten Plugin nicht vertraut bin und nicht weiß, wie es seine Option in der database speichert .

Chip war auf dem richtigen Weg, aber das Schließen der ersten Schleife würde nur eine Kategorie statt jeder Kategorie veröffentlichen. Am Ende habe ich die erste Schleife geschlossen und die ID und den IMG innerhalb der zweiten Schleife aufgerufen.

 $imgs = get_option( 'taxonomy_image_plugin' ); $categories = get_terms('portfolio_category', array('orderby' => 'id', 'hide_empty' => 0)); for($i=0; $iterm_id; $img=wp_get_attachment_image($imgs[$id], 'thumbnail'); echo('

'.$categories[$i]->name.'

'); echo($img); echo('

'.$categories[$i]->description.'

'); }