首页 > 解决方案 > 如何在 woocommerce 中编辑评级输出以删除文本以及如何在不使用 css 的情况下删除星星

问题描述

我是编码和 wordpress/woocommerce 的新手,正在尝试找到一种简单的方法来编辑wc_get_rating_html.

目前它输出以下内容:

function wc_get_rating_html( $rating ) { 
    if ( $rating > 0 ) { 
        $rating_html = '<div class="star-rating" title="' . sprintf( esc_attr__( 'Rated %s out of 5', 'woocommerce' ), $rating ) . '">'; 
        $rating_html .= '<span style="width:' . ( ( $rating / 5 ) * 100 ) . '%"><strong class="rating">' . $rating . '</strong> ' . esc_html__( 'out of 5', 'woocommerce' ) . '</span>'; 
        $rating_html .= '</div>'; 
    } else { 
        $rating_html = ''; 
    } 
    return apply_filters( 'woocommerce_product_get_rating_html', $rating_html, $rating ); 
} 

我只是想输出星级而不是之前和之后的文本。关于如何执行此操作的任何建议,因为我无法编辑模板文件。谢谢

标签: wordpresstemplatesrating-system

解决方案


Wordpress 使用过滤器,允许您替换和/或修改过滤器处理的输出。这是该wc_get_rating_html功能的完整块:

function wc_get_rating_html( $rating, $count = 0 ) {
    $html = '';

    if ( 0 < $rating ) {
        /* translators: %s: rating */
        $label = sprintf( __( 'Rated %s out of 5', 'woocommerce' ), $rating );
        $html  = '<div class="star-rating" role="img" aria-label="' . esc_attr( $label ) . '">' . wc_get_star_rating_html( $rating, $count ) . '</div>';
    }

    return apply_filters( 'woocommerce_product_get_rating_html', $html, $rating, $count );
}

在您的示例中,woocommerce_product_get_rating_html是过滤器名称并采用三个参数:

$rating_html代表用户看到的输出

$rating这是数字等级

$count这是评分的总数。

如果您希望替换输出,您需要woocommerce_product_get_rating_html使用一个返回修改后内容的函数连接到过滤器。如果您不熟悉在 Wordpress 中使用钩子和过滤器,您肯定需要查看钩子和过滤器以及它们在 Wordpress 中的工作方式。


推荐阅读