Obținerea URL-ului pentru thumbnail-ul unei taxonomii

20 mai 2015, 18:38:57
Vizualizări: 39K
Voturi: 6

Iată cum încerc momentan:

$taxonomies = array( 
   'product_cat'
);
$args = array(
   'orderby'           => 'name', 
   'order'             => 'ASC',
   'hide_empty'        => false, 
   'exclude'           => array(), 
   'exclude_tree'      => array(), 
   'include'           => array(),
   'number'            => '', 
   'fields'            => 'all', 
   'slug'              => '',
   'parent'            => '',
   'hierarchical'      => true, 
   'child_of'          => 0,
   'childless'         => false,
   'get'               => '', 
   'name__like'        => '',
   'description__like' => '',
   'pad_counts'        => false, 
   'offset'            => '', 
   'search'            => '', 
   'cache_domain'      => 'core'
); 

$terms = get_terms($taxonomies, $args);
$print_terms = 0;
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
   foreach ( $terms as $term ) {
     $term_img = wp_get_attachment_url( get_post_thumbnail_id($term->term_id) );
     var_dump($term_img); /* Întotdeauna returnează Bool(false) */

Așadar întrebarea este,

Știți ce fac greșit?

0
Toate răspunsurile la întrebare 5
3
16

Imaginile au fost setate de WooCommerce,

În cazul în care cineva are nevoie, iată cum am făcut-o (în 2015)

$thumb_id = get_term_meta( $term->term_id, 'thumbnail_id', true );
$term_img = wp_get_attachment_url(  $thumb_id );
21 mai 2015 10:26:26
Comentarii

+1000% :) mulțumesc

Hayden Thring Hayden Thring
22 mai 2019 09:05:48

chiar a funcționat omule :)

Krupal Panchal Krupal Panchal
22 ian. 2021 14:47:42

get_woocommerce_term_meta() este acum învechit. Ar trebui să folosești get_term_meta() în schimb :)

adamalexanderw adamalexanderw
4 iul. 2022 13:29:01
1

Taxonomiile nu au implicit imagini în miniatură. Fără a ști cum sunt acestea setate, nu pot spune exact cum să obții miniaturile, dar în ceea ce privește "ce greșesc?" get_post_thumbnail_id acceptă un ID de post sau, în lipsa acestuia, presupune postul curent din Buclă. Tu îi transmiți un term_id, ceea ce nu va funcționa. Poți vedea asta în sursă:

32  function get_post_thumbnail_id( $post_id = null ) {
33          $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
34          return get_post_meta( $post_id, '_thumbnail_id', true );
35  }

Presupun că, dacă term_id se întâmplă să corespundă cu un ID de post, ai putea obține ceva, dar nu va fi ceea ce dorești sau te aștepți.

20 mai 2015 19:08:06
Comentarii

Ai dreptate, verifică răspunsul meu!

Toni Michel Caubet Toni Michel Caubet
21 mai 2015 11:31:28
2

Răspunsul acceptat nu mai este valabil deoarece woocommerce_get_term_meta este învechit. De asemenea, nu mai există un câmp meta pentru thumbnail_id. Iată soluția corectă pentru anul 2021 dacă utilizați WooCommerce:

$term_image_id = get_term_meta( $term->term_id, 'product_search_image_id', true ); $term_image = wp_get_attachment_url( $term_image_id );

10 mar. 2021 08:48:10
Comentarii

Deci astăzi ar fi o întrebare diferită, nu?

Toni Michel Caubet Toni Michel Caubet
11 mai 2022 11:49:22

Nu, întrebarea ta era cum să obții un URL pentru thumbnail-ul unei taxonomii, iar așa se face cu cea mai recentă versiune.

RiotAct RiotAct
1 aug. 2022 22:10:40
0

Nu este nevoie de WooCommerce pentru a prelua o imagine de categorie și URL-ul acesteia.

$categories = get_categories();

foreach($categories as $cat) {

    $image_id = get_term_meta( $cat->term_id, 'thumbnail_id', true );
    $post_thumbnail_img = wp_get_attachment_image_src( $image_id, 'thumbnail' );

    echo '<img src="' . $post_thumbnail_img[0] . '" alt="' . $cat->name . '" />';

}

$post_thumbnail_img este un array cu cheia 0 egală cu URL-ul, 1 = lățime, și 2 = înălțime.

De asemenea, puteți utiliza oricare dintre următoarele în loc de 'thumbnail' (featured, medium, large sau orice altă dimensiune personalizată a imaginii din tema dumneavoastră). Totuși, 'thumbnail_id' trebuie să rămână neschimbat.

De asemenea, puteți prelua metadatele imaginii, cum ar fi "alt", "title" și multe altele, utilizând o funcție personalizată și puteți extinde acest lucru și mai mult.

Exemplul de mai sus presupune că știți cum să furnizați argumente pentru get_categories într-o buclă. Dar, dacă nu, aruncați o privire la get_categories pe WP pentru mai multe detalii.

29 ian. 2019 21:38:57
1
-2
<?php
            $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0));

            foreach($wcatTerms as $wcatTerm) : ?>
            <?php
            $thumb_id = get_woocommerce_term_meta( $wcatTerm->term_id, 'thumbnail_id', true );
            $term_img = wp_get_attachment_url(  $thumb_id );
            ?>

                        <div class="product-item">
                          <div class="item-inner fadeInUp">
                            <div class="product-thumbnail">
                              <div class="icon-sale-label sale-left">Reducere</div>
                              <!--<div class="icon-new-label new-right">Nou</div>-->
                              <div class="pr-img-area"> <img class="first-img" src="<?php echo $term_img;?>" alt="<?php echo esc_attr($wcatTerm->name); ?>" title="<?php echo esc_attr($wcatTerm->name); ?>"> <img class="hover-img" src="<?php echo $term_img;?>" alt="<?php echo esc_attr($wcatTerm->name); ?>" title="<?php echo esc_attr($wcatTerm->name); ?>"> </div>
                            </div>
                            <div class="item-info">
                              <div class="info-inner">
                                <div class="item-title"> <a title="<?php echo esc_attr($wcatTerm->name); ?>" href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a> </div>
                              </div>
                            </div>
                          </div>
                        </div>

                 <?php endforeach;  ?>
20 feb. 2018 10:29:37
Comentarii

acesta este practic un duplicat al răspunsului meu... dar mulțumesc

Toni Michel Caubet Toni Michel Caubet
20 feb. 2018 10:42:09