Замените звездные рейтинги в Woocommerce с помощью хуков - PullRequest
0 голосов
/ 21 декабря 2018

когда включено, каждый продукт woocommerce имеет звездный рейтинг.У меня есть некоторый пользовательский код, который я хотел бы полностью заменить текущим звездным рейтингом (включая часть "# Отзывы клиентов".

В настоящее время код, который я использую, добавляется только к звездному рейтингу, а незамените его полностью. Ниже приведен текущий результат, который я вижу, и код, который я добавил в functions.php. Заранее спасибо.

enter image description here

Код:

add_filter( 'woocommerce_get_star_rating_html', 'replace_star_ratings' );

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

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Чтобы полностью заменить рейтинг звездочек на продуктах без редактирования шаблонов, используйте следующее:

// 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 вашей активной дочерней темы (или активной темы).Проверено и работает.

0 голосов
/ 21 декабря 2018

woocommerce_product_get_rating_html будет тем фильтром, который вам нужен, но я не думаю, что он достаточно широк для того, что вы хотите сделать.Вам придется переопределить шаблоны rating.php, чтобы все это изменить.

woocommerce/templates/single-product/rating.php, если вы делаете это на странице одного продукта.если вы делаете это в цикле, то вышеупомянутый фильтр должен работать нормально, но вот расположение шаблона для этого в любом случае woocommerce/templates/loop/rating.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...