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; } ?>
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.