Zugriff auf die Post ID innerhalb der Schleife

Ich habe eine Seite namens Produkte mit der ID ‘8’

Innerhalb dessen habe ich den folgenden Template-Teil

Dann habe ich in dieser Datei diesen Template-Teil:

Dann versuche ich innerhalb der Brand Product-Datei eine Liste von Begriffen zu erhalten, die auf der ID des Posts in jeder Schleifeninteraktion basieren: $terms = get_the_terms( $post->ID, 'brand-product' );

Stattdessen gibt es mir die ID der Products-Seite (also ‘8’) und gibt diesen Fehler aus

Nicht definierte Variable: Marke

Ich habe versucht, global $post; aber das hat nicht funktioniert

Weiß jemand wie ich das beheben kann?

Hier ist der Code für loop-brand-product.php (der Fehler zeigt auf jede case statement innerhalb des switch

 ID, 'brand-product' ); if ( $terms && ! is_wp_error( $terms ) ) { $brand = array(); foreach ( $terms as $term ) { $brand[] = $term->term_id; echo $term; } $brand = join( ", ", $brand ); } switch ($brand) { case 3: $img = 'logo-amazon-brand.png'; break; case 5: $img = 'logo-dc-brand.gif'; break; case 8: $img = 'logo-huebsch-brand.png'; break; case 4: $img = 'logo-miele-brand.gif'; break; case 9: $img = 'logo-speed-queen-brand.gif'; break; } ?> 

Solutions Collecting From Web of "Zugriff auf die Post ID innerhalb der Schleife"

Das Problem kommt wahrscheinlich immer dann, wenn für einen $post keine Begriffe gesetzt sind. Sie müssen $brand = array() außerhalb Ihrer IF statement setzen, fügen Sie sie einfach unter get_the_terms() . An diesem Punkt würde es auch nicht schaden, deine switch statement in ein if( ! empty( $brand ) ) {

Ein anderes Problem, das ich mit diesem Code sehe, ist, dass Sie Ihre Term-IDs zu einem Array hinzufügen, dann dieses Array in eine Zeichenfolge konvertieren und dann auf eine ganze Zahl umschalten. Also, wenn Sie einen Beitrag zu Term 3 und Term 5 zugewiesen haben, wird jedesmal, wenn es Ihren Join trifft, in String '3, 5' konvertiert und der gesamte String gegen jeden Fall getestet:

'3, 5' == 3 -> False

'3, 5' == 5 -> False

usw. Vielleicht möchten Sie nur den ersten Ausdruck bekommen und darauf testen.