Zeigen Sie Kinderkategoriebilder an

Ich habe vier Stunden daran gearbeitet, aber ohne Ergebnis. Es gibt eine benutzerdefinierte Taxonomie und ich muss das Bild der untergeordneten Kategorie anzeigen, aber das Bild der übergeordneten Kategorie anzeigen.

Mein Code ist:

 term_id; $taxonomyName = "product-categories"; $termchildren = get_term_children( $term_id, $taxonomyName ); $image_id = get_term_meta( $term_id, 'showcase-taxonomy-image-id', true ); if ($termchildren != false){ foreach ($termchildren as $child) { $term2 = get_term_by( 'id', $child, $taxonomyName ); ?> 
<img class="img-fluid imgborder" src="https://wordpress.stackexchange.com/questions/287281/display-children-category-images/" alt=" name; ?>">

<a href="https://wordpress.stackexchange.com/questions/287281/display-children-category-images/"> name; ?>

Ich weiß, dass das Problem in dieser Zeile liegt, aber ich weiß nicht, was genau ich tun soll.

  $image_id = get_term_meta( $term_id, 'showcase-taxonomy-image-id', true ); 

Ich würde mich freuen, wenn mir jemand helfen kann.

Solutions Collecting From Web of "Zeigen Sie Kinderkategoriebilder an"

Habe es nicht getestet, aber das sollte es tun.

  < ?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); $queried_object = get_queried_object(); $term_id = get_queried_object() -> term_id; $taxonomyName = "product-categories"; $termchildren = get_term_children( $term_id, $taxonomyName ); if (! empty ( $term_children ) ){ foreach ($termchildren as $child) { $image_id = get_term_meta( $child, 'showcase-taxonomy-image-id', true );?>  < ?php } ?> 

Sie müssen nur die Einstellung des $image_id Wertes innerhalb der foreach Schleife verschieben, damit das Bild für jede $image_id abgerufen wird.

Hier ist ein vollständiger Code mit dieser Änderung und einigen anderen:

 $queried_object = get_queried_object(); $term_children = get_term_children( $queried_object->term_id, $queried_object->taxonomy ); if ( ! empty ( $term_children ) ) : foreach ( $term_children as $term_id ) : $term = get_term_by( 'id', $term_id, $queried_object->taxonomy ); $image_id = get_term_meta( $term_id, 'showcase-taxonomy-image-id', true ); ?> 
< ?php echo wp_get_attachment_image( $image_id, 'thumbnail', false, array( 'class' => 'img-fluid imgborder' ) ); ?>

< ?php echo $term->name; ?>

< ?php endforeach; endif;

Beachten Sie einige der anderen Änderungen, die ich vorgenommen habe:

  1. Ich habe unnötige Werte von Anfang an losgeworden und get_queried_object() , um das Term-Objekt für den aktuellen Term zu erhalten, und habe seine Eigenschaften verwendet, um den Begriff Children zu erhalten.
  2. Ich habe überprüft, dass $term_children nicht leer , sondern falsch ist. get_term_children() gibt niemals einen tatsächlichen false Wert zurück, also ! empty() ! empty() ist eine genauere Darstellung dessen, wonach Sie suchen.
  3. Ich setze $image_id innerhalb der foreach Schleife mit der aktuellen $term_id für den $term_id Begriff.
  4. Ich habe wp_get_attachment_image() anstelle von wp_get_attachment_image_url() weil ich es besser finde, PHP in HTML-Attributen zu mischen.
  5. Ich habe esc_url() auf get_term_link() für die zusätzliche Sicherheitsebene verwendet, und ich habe auch das Taxonomieargument von get_term_link() weil es nicht benötigt wird und den Code kürzer hält.

funktioniert wunderbar … danke Jacob Peattie und Daniel Fonda 🙂

 < ?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); $queried_object = get_queried_object(); $term_id = get_queried_object() -> term_id; $taxonomyName = "product-categories"; $termchildren = get_term_children( $term_id, $taxonomyName ); if ($termchildren != false){ foreach ($termchildren as $child) { $term2 = get_term_by( 'id', $child, $taxonomyName ); $image_id = get_term_meta( $child, 'showcase-taxonomy-image-id', true ); ?>  

Anstelle von $term_id müssen Sie $termchildren id verwenden und in foreach loop setzen

 if (! empty ( $term_children ) ){ foreach ($termchildren as $child) { $image_id = get_term_meta( $child, 'showcase-taxonomy-image-id', true );?>