Получение URL миниатюры таксономии

20 мая 2015 г., 18:38:57
Просмотры: 39K
Голосов: 6

Вот как я пытаюсь сделать это сейчас:

$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); /* Всегда возвращает Bool(false) */

Итак, вопрос:

Знаете ли вы, что я делаю неправильно?

0
Все ответы на вопрос 5
3
16

Изображения были установлены через WooCommerce,

Если кому-то нужно, вот как я это сделал (в 2015 году)

$thumb_id = get_term_meta( $term->term_id, 'thumbnail_id', true );
$term_img = wp_get_attachment_url(  $thumb_id );
21 мая 2015 г. 10:26:26
Комментарии

+1000% :) спасибо

Hayden Thring Hayden Thring
22 мая 2019 г. 09:05:48

действительно сработало, чувак :)

Krupal Panchal Krupal Panchal
22 янв. 2021 г. 14:47:42

get_woocommerce_term_meta() теперь устарела. Вместо неё следует использовать get_term_meta() :)

adamalexanderw adamalexanderw
4 июл. 2022 г. 13:29:01
1

Таксономии по умолчанию не имеют миниатюрных изображений. Не зная, как они установлены, я не могу точно сказать, как получить миниатюры, но что касается вопроса "что я делаю не так?" - функция get_post_thumbnail_id принимает ID записи или, если он не указан, предполагает текущую запись в Цикле (Loop). Вы передаёте ей term_id, что не будет работать. Это видно в исходном коде:

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  }

Предположу, что если term_id случайно совпадёт с ID записи, вы можете что-то получить, но это не будет тем, что вы хотите или ожидаете.

20 мая 2015 г. 19:08:06
Комментарии

Ты прав, проверь мой ответ!

Toni Michel Caubet Toni Michel Caubet
21 мая 2015 г. 11:31:28
2

Принятый ответ больше недействителен, так как woocommerce_get_term_meta устарел. Также больше нет метаполя thumbnail_id. Вот правильное решение на 2021 год, если вы используете 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 мар. 2021 г. 08:48:10
Комментарии

Значит, сегодня вопрос был бы другим, верно?

Toni Michel Caubet Toni Michel Caubet
11 мая 2022 г. 11:49:22

Нет, ваш вопрос был о том, как получить URL миниатюры таксономии, и вот как это делается в последней версии.

RiotAct RiotAct
1 авг. 2022 г. 22:10:40
0

Для получения изображения категории и его URL не требуется WooCommerce.

$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 — это массив, где ключ 0 соответствует URL, 1 — ширине, а 2 — высоте.

Вместо 'thumbnail' можно использовать другие размеры изображений ('featured', 'medium', 'large' или любой другой пользовательский размер из вашей темы). Однако 'thumbnail_id' должен оставаться без изменений.

Также можно получить метаданные изображения, такие как "alt", "title" и другие, с помощью пользовательской функции, расширив функционал.

Предполагается, что вы знаете, как передавать аргументы в get_categories в цикле. Если нет, ознакомьтесь с подробностями на странице get_categories в документации WordPress.

29 янв. 2019 г. 21:38:57
1
-2
<?php
            // Получаем все родительские категории товаров
            $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0));

            foreach($wcatTerms as $wcatTerm) : ?>
            <?php
            // Получаем ID миниатюры и URL изображения для категории
            $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">Распродажа</div>
                              <!--<div class="icon-new-label new-right">Новинка</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 февр. 2018 г. 10:29:37
Комментарии

это почти полная копия моего ответа.. но спасибо

Toni Michel Caubet Toni Michel Caubet
20 февр. 2018 г. 10:42:09