WooCommerce将类别横幅添加到产品页面

时间:2016-06-09 08:13:16

标签: php woocommerce

我正在使用WooCommerce,我想在产品页面中显示产品类别横幅。 对于我使用此代码的产品类别:

add_action( 'woocommerce_archive_description', 'woocommerce_category_image', 2 );
function woocommerce_category_image() {
    if (is_product_category()){
        global $wp_query;
        $cat = $wp_query->get_queried_object();
        $thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true );
        $image = wp_get_attachment_url( $thumbnail_id );
        if ( $image ) {
            echo '<img src="' . $image . '" alt="" class="cat_ban"/>';
        }
    }
}

对于产品页面,我使用了类似的代码并进行了一些更改,但它不起作用,有人可以指出我的错误吗?

add_action( 'woocommerce_archive_description', 'woocommerce_product_image', 2 );
function woocommerce_product_image() {
    if (is_product()){
        global $post;
        $terms = get_the_terms( $post->ID, 'product_cat' );
        $cat = $terms->term_id;
        $thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true );
        $image = wp_get_attachment_url( $thumbnail_id );
        if ( $image ) {
            echo '<img src="' . $image . '" alt="" class="cat_ban"/>';
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我自己找到了解决方案,希望它会对你有所帮助:

add_action( 'woocommerce_before_single_product', 'woocommerce_product_image', 2 );
function woocommerce_product_image(){

    $product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' );

    if ( $product_cats && ! is_wp_error ( $product_cats ) ){

        $cat = array_shift( $product_cats ); 
        $thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true );
        $image = wp_get_attachment_url( $thumbnail_id );
        $category_link = get_category_link($cat);
        if ( $image ) {
            echo '<a href="' .$category_link. '"><img src="' . $image . '" alt="" class="cat_ban"/></a>';
        }
    }
}

答案 1 :(得分:0)

您可以将类别横幅添加到产品页面,使用此代码 -

add_action('woocommerce_before_single_product', 'woocommerce_add_category_banner', 2);
function woocommerce_add_category_banner()
{
    global $product;
    if (isset($product) && is_product()) 
    {
        global $wp_query;
        $cat = $wp_query->get_queried_object();
        $thumbnail_id = get_woocommerce_term_meta($cat->term_id, 'thumbnail_id', true);
        $image = wp_get_attachment_url($thumbnail_id);
        if ($image) 
        {
            echo '<img src="' . esc_url($image) . '" alt="" />';
        }
    }
   }