WooCommerce - 隐藏特定产品类别页面上的类别图像

问题描述 投票:0回答:1

Stack Overflow 社区您好,

我正在写一个备件网站。某些类别页面具有复杂的绘图,需要像平常一样大显示,以便您可以看到发生了什么。其他我真的可以用根本不显示类别图像的类别页面来显示内容。

我似乎无法改变 archive-product.php 模板,以便它显示某些页面的类别图像,而不是其他页面的类别图像。有人可以帮我吗?

我是否需要创建第二个 archive-product.php 模板,并以某种方式覆盖我不想显示类别图像的少量类别?然后删除类别图像的操作?

我觉得我的思路是对的,但可能是语法让我绊倒了

php wordpress woocommerce conditional-statements custom-wordpress-pages
1个回答
0
投票

您不需要为此更改模板。查看 content-product-cat.php 模板,您会注意到操作 woocommerce_before_subcategory_title 它将调用 woocommerce_subcategory_thumbnail 函数。如果我们研究该函数 - https://wp-kama.com/filecode/woocommerce/includes/wc-template-functions.php#L2684-2712你会注意到,如果你不提供图像将加载默认图像

 wc_placeholder_img_src()
.

所以需要用

remove_action('woocommerce_before_subcategory_title','woocommerce_subcategory_thumbnail');
去掉原来的函数,提供自己的函数。

我将简单地复制粘贴原始函数并删除 else 部分。您可以根据需要更改功能。

add_action('woocommerce_before_subcategory_title','theme_subcategory_thumbnail',10,1);
function theme_subcategory_thumbnail($category) {
    $small_thumbnail_size = apply_filters( 'subcategory_archive_thumbnail_size', 'woocommerce_thumbnail' );
    $dimensions           = wc_get_image_size( $small_thumbnail_size );
    $thumbnail_id         = get_term_meta( $category->term_id, 'thumbnail_id', true );

    if ( $thumbnail_id ) {
        $image        = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size );
        $image        = $image[0];
        $image_srcset = function_exists( 'wp_get_attachment_image_srcset' ) ? wp_get_attachment_image_srcset( $thumbnail_id, $small_thumbnail_size ) : false;
        $image_sizes  = function_exists( 'wp_get_attachment_image_sizes' ) ? wp_get_attachment_image_sizes( $thumbnail_id, $small_thumbnail_size ) : false;
    } 
    //else part is removed

    if ( $image ) {
        $image = str_replace( ' ', '%20', $image );

        // Add responsive image markup if available.
        if ( $image_srcset && $image_sizes ) {
            echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" srcset="' . esc_attr( $image_srcset ) . '" sizes="' . esc_attr( $image_sizes ) . '" />';
        } else {
            echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" />';
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.