首页 > 解决方案 > 使用钩子替换 Woocommerce 中的星级

问题描述

启用后,每个 woocommerce 产品都有星级。我有一些自定义代码,我想完全替换当前的星级评分(包括“#customer reviews”部分。

目前,我使用的代码仅附加到星级,而不是完全替换它。下面是我看到的当前结果,以及我添加到functions.php 中的代码。先感谢您。

在此处输入图像描述

代码:

add_filter( 'woocommerce_get_star_rating_html', 'replace_star_ratings' );

function replace_star_ratings( $variable ) {
    echo "XXX";
    return $variable;
}

标签: phpwordpresswoocommercehook-woocommercerating

解决方案


要在不编辑模板的情况下完全替换产品的 Stars 评级,请使用以下命令:

// For single product pages
add_action( 'woocommerce_single_product_summary', 'custom_rating_single_product_summary', 4 );
function custom_rating_single_product_summary() {
    global $product;

    if ( $product->get_rating_count() > 0 ) {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
        add_action( 'woocommerce_single_product_summary', 'replace_product_rating', 9 );
    }

}

// For Shop and archicves pages
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_rating_after_shop_loop_item_title', 4 );
function custom_rating_after_shop_loop_item_title() {
    global $product;

    if ( $product->get_rating_count() > 0 ) {
        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
        add_action( 'woocommerce_after_shop_loop_item_title', 'replace_product_rating', 5 );
    }

}

// Content function
function replace_product_rating() {
    global $product;

    $rating_count = $product->get_rating_count();
    $review_count = $product->get_review_count();
    $average      = $product->get_average_rating();

    echo '<div class="woocommerce-product-rating">'. __("XXX", "woocommerce") . '</div>';
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。


推荐阅读