在短代码中显示 Woocommerce 子类别图像

Displaying the Woocommerce subcategory image in a shortcode

所以我有一个运行良好的短代码,它可以拉入产品的子类别并显示图像和文本,但我意识到它位于内容的顶部,因为我使用了 echo 。 . .所以将 HTML 输出移动到一个变量中,这样我就可以 return 它但是图像从列表项中出来,所以函数似乎有问题:woocommerce_subcategory_thumbnail()

不太清楚为什么,但我认为函数必须有回声?我想我只想获取图像 url 并将其放入容器中?老实说不知道最好的方法是什么,但这就是我所在的地方

add_shortcode( 'show_products_categories_os', 'categories_of_the_product_os' );
function categories_of_the_product_os() {
$term_id = get_term_by( 'slug', 'os', 'product_cat' );
$terms = get_the_terms( get_the_ID(), 'product_cat' );
    
if ( $terms ) {         
    $output_html .= '<ul class="product-cats osp">';     
        foreach ( $terms as $term ) {
            if($term->parent === $term_id->term_id){
              $output_html .= '<li class="category os">';
                $output_html .= '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '" target="_blank">' . woocommerce_subcategory_thumbnail( $term ) . '</a>';
                $output_html .= '<h2><a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '" target="_blank">' . $term->name . '</a></h2>';                                                                             
              $output_html .= '</li>';
            }                                                                    
        }     
    $output_html .= '</ul>'; 
}
    return $output_html;
}

有没有我找不到的另一个函数可以为图像提供 url?或者从其他功能中剥离它的方法?

您需要从术语的元数据中获取 thumbnail_id 并将其作为参数传递给 wp_get_attachment_url


add_shortcode( 'show_products_categories_os', 'categories_of_the_product_os' );
function categories_of_the_product_os() {
    $term_id = get_term_by( 'slug', 'os', 'product_cat' );
    $terms = get_the_terms( get_the_ID(), 'product_cat' );
    
    if ( $terms ) {         
        $output_html .= '<ul class="product-cats osp">';     
            foreach ( $terms as $term ) {
                $thumbnail_id = get_term_meta( $term->term_id, 'thumbnail_id', true );
                $image_url = wp_get_attachment_url( $thumbnail_id );
                if($term->parent === $term_id->term_id){
                   $output_html .= '<li class="category os">';
                   $output_html .= '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '" target="_blank">' . $image_url . '</a>';
                   $output_html .= '<h2><a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '" target="_blank">' . $term->name . '</a></h2>';                                                                             
                   $output_html .= '</li>';
                }                                                                    
             }     
         $output_html .= '</ul>'; 
    }
    return $output_html;
}

来源:

注意事项

您现在需要将 $image_url 添加到要输出的图像的 img 标签的 src 属性中,因为目前只显示 URL .