【问题标题】:Show WooCommerce parent category thumbnail when viewing a child category查看子类别时显示 WooCommerce 父类别缩略图
【发布时间】:2020-10-07 09:08:42
【问题描述】:

我有一个函数可以在 WooCommerce 的存档页面上返回产品类别缩略图。这很好用。

我想做的是在查看子类别时能够返回父类别缩略图。

这是我目前得到的代码:

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

任何人都可以帮助修改查询,使其显示父类别图像。

如果有,最好显示子缩略图,如果没有,则返回到父缩略图并显示。

【问题讨论】:

    标签: php wordpress woocommerce thumbnails taxonomy-terms


    【解决方案1】:

    为避免顶级类别出现空图像,请使用以下命令:

    function woocommerce_category_image() {
        if ( is_product_category() ){
            $term      = get_queried_object(); // get the WP_Term Object
            $term_id   = $term->parent > 0 ? $term->parent : $term->term_id; // Avoid an empty image on the top level category
            $image_src = wp_get_attachment_url( get_term_meta( $term_id, 'thumbnail_id', true ) ); // Get image Url
        
            if ( ! empty($image_src) ) {
                echo '<img src="' . $image_src . '" alt="' . $term->name . '" />';
            }
        }
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。


    更新(与你的评论有关)

    这里如果查询的产品类别没有设置图片,则显示父产品类别图片。

    function woocommerce_category_image() {
        if ( is_product_category() ){
            $term      = get_queried_object(); // get the WP_Term Object
            $image_id  = get_term_meta( $term->term_id, 'thumbnail_id', true );
            
            if( empty( $image_id ) && $term->parent > 0 ) {
                $image_id  = get_term_meta( $term->parent, 'thumbnail_id', true );
            }
            $image_src = wp_get_attachment_url( $image_id ); // Get the image Url
        
            if ( ! empty($image_src) ) {
                echo '<img src="' . $image_src . '" alt="' . $term->name . '" />';
            }
        }
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 使用此代码,如果有一组,它似乎不会拉过子类别图像。它要么使用 Parent 类别,要么不使用(如果 parent 没有)。有没有办法先使用类别图像,然后不针对子类别设置父项?
    • @CS10 我添加了一些应该可以解决问题的代码。
    • 嗨@LoicTheAztec,非常感谢您的回复。不幸的是,这导致网站崩溃并且无法加载。它报告说第一个 if 行末尾的 { 是意外的..?
    • @CS10 我的错,对不起:错过了一个右括号。代码更新:)
    • 正确。非常感谢!
    【解决方案2】:

    只需将$cat-&gt;term_id 更改为$cat-&gt;parent 即可获取父缩略图ID。

    最终代码:

    function woocommerce_category_image() {
    
    if ( is_product_category() ){
    
        global $wp_query;
        $cat = $wp_query->get_queried_object();
        $thumbnail_id = get_term_meta( $cat->parent, 'thumbnail_id', true );
        $image = wp_get_attachment_url( $thumbnail_id );
    
        if ( $image ) {
            echo '<img src="' . $image . '" alt="' . $cat->name . '" />';
        }
    }
    

    希望对你有帮助

    【讨论】:

    • 谢谢,有点!但是现在父类别不显示图像,即使我有一组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    相关资源
    最近更新 更多