获取分类的缩略图URL

时间:2015-05-20 作者:Toni Michel Caubet

这就是我目前正在尝试的方式:

$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); /* Allways Bool(false) */
所以问题是,

你知道我做错了什么吗?

5 个回复
最合适的回答,由SO网友:Toni Michel Caubet 整理而成

由woocommerce设定的图像,

如果有人需要,我就是这样做的

$thumb_id = get_woocommerce_term_meta( $term->term_id, \'thumbnail_id\', true );
$term_img = wp_get_attachment_url(  $thumb_id );

SO网友:s_ha_dum

默认情况下,分类法没有缩略图。在不知道这些是如何设置的情况下,我无法确切地说出如何获得缩略图,但至于“我做错了什么?”get_post_thumbnail_id 接受post ID或缺少,以假定循环中的当前post。你正在通过一个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匹配,你会得到一些东西,但它不是你想要或期望的。

SO网友:Dario Zadro

Woocommerce不需要检索类别图像及其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\\u thumbnail\\u img是一个数组,键0等于URL,1=宽度,2=高度。

您还可以使用以下任何一种来代替“缩略图”(特色、中、大或主题中的任何其他自定义图像大小)。但是,“thumbnail\\u id”必须保持原样。

您还可以使用custom function 并进一步扩展。

以上假设您知道如何提供参数以在循环中获取\\u类别。但是,如果不看看get_categories 有关WP的更多详细信息。

SO网友:RiotAct

接受的答案不再有效,因为woocommerce_get_term_meta 已弃用。也不再有thumbnail_id. 如果您使用WooCommerce,以下是2021的正确解决方案:

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

SO网友:Purnendu Sarkar
<?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">Sale</div>
                              <!--<div class="icon-new-label new-right">New</div>-->
                              <div class="pr-img-area"> <img class="first-img" src="<?php echo $term_img;?>" alt=""> <img class="hover-img" src="<?php echo $term_img;?>" alt=""> </div>
                            </div>
                            <div class="item-info">
                              <div class="info-inner">
                                <div class="item-title"> <a title="Ipsums Dolors Untra" href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a> </div>
                              </div>
                            </div>
                          </div>
                        </div>

                 <?php endforeach;  ?>
结束

相关推荐

GET_TERMS:确定分类术语是否有子项

我想确定一个分类术语是否有子项。请参见下面的标记,我将解释我的意思:<?php $terms = get_terms(\"wpsc_product_category\"); if ( !empty( $terms ) && !is_wp_error( $terms ) ){ foreach( get_terms( \'wpsc_product_category\', array( \'hide_empty\' => false, \'parent