Obtener la URL de la miniatura de una taxonomía

20 may 2015, 18:38:57
Vistas: 39K
Votos: 6

Así es como lo estoy intentando actualmente:

$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); /* Siempre devuelve Bool(false) */

Entonces la pregunta es,

¿Sabes qué estoy haciendo mal?

0
Todas las respuestas a la pregunta 5
3
16

Las imágenes fueron configuradas por WooCommerce,

En caso de que alguien lo necesite, así es como lo hice (en 2015)

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

+1000% :) gracias

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

realmente funcionó, hombre :)

Krupal Panchal Krupal Panchal
22 ene 2021 14:47:42

get_woocommerce_term_meta() ahora está obsoleto. Deberías usar get_term_meta() en su lugar :)

adamalexanderw adamalexanderw
4 jul 2022 13:29:01
1

Por defecto, las taxonomías no tienen imágenes en miniatura. Sin saber cómo están configuradas, no puedo decir exactamente cómo obtener las miniaturas, pero en cuanto a "¿qué estoy haciendo mal?", get_post_thumbnail_id acepta un ID de post o, si no se proporciona, asume el post actual dentro del Loop. Estás pasándole un term_id, lo cual no va a funcionar. Puedes verlo en el código fuente:

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  }

Supongo que, si el term_id coincide con un ID de post, obtendrías algo, pero no será lo que quieres o esperas.

20 may 2015 19:08:06
Comentarios

¡Tienes razón, revisa mi respuesta!

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

La respuesta aceptada ya no es válida ya que woocommerce_get_term_meta está obsoleto. Además, ya no existe un campo meta de thumbnail_id. Aquí está la solución correcta para 2021 si estás usando 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
Comentarios

¿Así que hoy sería una pregunta diferente, cierto?

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

No, tu pregunta era cómo obtener la URL de la miniatura de una taxonomía, así es como se hace con la última versión.

RiotAct RiotAct
1 ago 2022 22:10:40
0

No es necesario Woocommerce para obtener la imagen de una categoría y su URL.

$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 es un array donde la clave 0 corresponde a la URL, 1 = ancho y 2 = altura.

También puedes usar cualquiera de los siguientes tamaños en lugar de 'thumbnail' (featured, medium, large, o cualquier otro tamaño personalizado de tu tema). Sin embargo, 'thumbnail_id' debe permanecer tal cual.

También puedes obtener metadatos de la imagen como "alt", "title" y más usando una función personalizada para extender esta funcionalidad.

Lo anterior asume que sabes cómo proporcionar argumentos a get_categories en un bucle. Pero si no es así, consulta get_categories en WP para más detalles.

29 ene 2019 21:38:57
1
-2
<?php
            // Obtener términos de categorías de productos principales
            $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0));

            foreach($wcatTerms as $wcatTerm) : ?>
            <?php
            // Obtener la imagen destacada de la categoría
            $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">Oferta</div>
                              <!--<div class="icon-new-label new-right">Nuevo</div>-->
                              <div class="pr-img-area"> <img class="first-img" src="<?php echo $term_img;?>" alt="<?php echo $wcatTerm->name; ?>" title="<?php echo $wcatTerm->name; ?>"> <img class="hover-img" src="<?php echo $term_img;?>" alt="<?php echo $wcatTerm->name; ?>" title="<?php echo $wcatTerm->name; ?>"> </div>
                            </div>
                            <div class="item-info">
                              <div class="info-inner">
                                <div class="item-title"> <a title="<?php echo $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
Comentarios

esto es prácticamente un duplicado de mi respuesta... pero gracias

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