Добавьте звездный рейтинг по идентификатору продукта на некоторых страницах в Woocommerce


Есть ли способ указать звездный рейтинг определенного продукта на пользовательской странице в пользовательских местах? Другими словами, могу ли я добавить звездный рейтинг определенной футболки, чтобы она отображалась, например, под изображением футболки на моей домашней странице?

Я полагаю, что мне нужно добавить какой-то php в свой редактор, а затем вызвать его с помощью какого-то html. Я видел этот поток ответов, в котором один из ответов, похоже, помог людям, однако он дает вам только необходимый php, поэтому я не знаю, как на самом деле разместить это в определенном месте на определенной странице. Я также не уверен, касается ли этот ответ возможности добавления звезд на пользовательские страницы, а не только на страницы woocommerce.

Еще один из ответов в этой теме содержит html. Я попробовал это и смог загрузить звезды, за исключением того, что они не соответствуют фактическому рейтингу звезд на странице продукта.

Я приношу извинения за то, что подобные вопросы уже существуют, однако они похоже, они не удовлетворяют мои потребности напрямую, и я слишком некомпетентен, чтобы заставить их работать:/.

Author: LoicTheAztec, 2018-09-01

1 answers

Для определенного идентификатора продукта вы можете использовать некоторые специальные WC_Product методы:

// Get an instance of the WC_Product Object (from a product ID)
$product = wc_get_product( $product_id);

// The product rating count (number of reviews by rating )
$rating_count = $product->get_rating_counts(); // Multidimensional array

// The product average rating (or how many stars this product has)
$average_rating = $product->get_average_rating();

// Testing Output
echo '<p>Rating average: '.$average_rating.' stars</p>';

Для отображения среднего рейтинга товара "звезды":

Вы можете использовать специальную функцию wc_get_rating_html() с get_average_rating() WC_Product метод. Таким образом, необходимый код будет следующим:

// Get an instance of the WC_Product Object (from a product ID)
$product = wc_get_product( $product_id);

// The product average rating (or how many stars this product has)
$average_rating = $product->get_average_rating();

// The product stars average rating html formatted.
$average_rating_html = wc_get_rating_html($average_rating);

// Display stars average rating html
echo $average_rating_html;

Протестировано и работает.

Интересный ответ: Рейтинг показывает цифры вместо звезды


Шорткод для отображения звездного рейтинга продукта везде - 2 версии кода:

1) Лучший способ, основанный на wc_get_rating_html() функция (для Woocommerce 3+):

add_shortcode( 'product_rating', 'display_the_product_rating' );
function display_the_product_rating( $atts ) {
    // Shortcode attributes
    $atts = shortcode_atts( array(
        'id' => '',
    ), $atts, 'product_rating' );

    if ( isset($atts['id']) && $atts['id'] > 0 ):

    // Get an instance of the WC_Product Object
    $product = wc_get_product( $atts['id'] );

    // The product average rating (or how many stars this product has)
    $average = $product->get_average_rating();

    endif;

    if ( isset($average) ) :

    return wc_get_rating_html($average);

    endif;
}

2) Старый способ (также работает):

add_shortcode( 'product_rating', 'display_the_product_rating' );
function display_the_product_rating( $atts ) {
    // Shortcode attributes
    $atts = shortcode_atts( array(
        'id' => '',
    ), $atts, 'product_rating' );

    if ( isset($atts['id']) && $atts['id'] > 0 ):

    // Get an instance of the WC_Product Object
    $product = wc_get_product( $atts['id'] );

    // The product average rating (or how many stars this product has)
    $average = $product->get_average_rating();

    // HERE the average width
    $average_width = $average * 16 . 'px';

    endif;

    if ( isset($average) ) :

    return '<div class="starwrapper" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
        <span class="star-rating" title="'.sprintf(__('Rated %s out of 5', 'woocommerce'), $average).'">
            <span style="width:'.$average_width.'">
                <span itemprop="ratingValue" class="rating">'.$average.'</span>
            </span>
        </span>
    </div><br clear="all">';

    endif;
}

Вводится код function.php файл активной дочерней темы (или активной темы). Протестировано и работает.


ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:

1) На страницах WordPress или текстовый редактор сообщений (Где 37 является ли идентификатор продукта):

[product_rating id='37']

2) В коде php:

echo do_shortcode( "[product_rating id='37']" );

3) Между тегами html:

<?php echo do_shortcode( "[product_rating id='37']" ); ?>

Вы получите что-то вроде: enter image description here

 2
Author: LoicTheAztec, 2018-09-01 04:46:20