WooCommerce-如何为所有产品添加5颗星以测试设计

时间:2017-08-24 作者:Juan Bonnett

我在谷歌上找不到这个,我想这是一个常见的要求。

有没有办法用一个插件或PHP代码为我的产品添加5颗星(或其他评级)?我需要在每个目录中显示星星,以便测试我的设计。

2 个回复
SO网友:bravokeyl

@Nikola\'sanswer 提供所需内容,而无需将任何内容保存到数据库中。如果you 需要将值保存到数据库并直接执行SQL,可以执行以下操作。

基本上,WooCommerce将产品评论数据存储为meta keys

wc\\U评级\\U计数

UPDATE fs_postmeta SET meta_value = 5
WHERE meta_key = \'_wc_average_rating\' AND post_id = 564;

UPDATE fs_postmeta SET meta_value = 105 
WHERE meta_key = \'_wc_review_count\' AND post_id = 564;

<?php
/*
Plugin Name: BK
Version: 0.0.1
*/

function bk_get_all_products(  ) {

    $ps = new WP_Query( array(
        \'post_type\' => \'product\',
        \'post_status\' => \'publish\',
        \'posts_per_page\' => \'-1\'
    ) );
    $arr = array();
    while($ps->have_posts()){
      $ps->the_post();
      $arr[] = get_the_ID();
    }
    return $arr;
}

add_action(\'init\',\'bk\');
function bk(){
  $products = bk_get_all_products();
  // $re = array(
  //   "1" => 1,
  //   "2" => 2,
  //   "3" => 3,
  //   "4" => 5,
  //   "5" => 6,
  // );
  foreach ($products as $key => $value) {
    update_post_meta( $value, \'_wc_average_rating\', 1 );
    update_post_meta( $value, \'_wc_review_count\', 15 );
    // update_post_meta( $value, \'_wc_rating_count\', $re );
  }
}
记住,我们不会更改产品选项卡下显示的评论列表。

SO网友:Nikola Miljković

由于您仅出于视觉目的需要它,因此最好不要将评级值保存到数据库中,而只在运行时修改该值:

/**
 * Modifies WooCommerce product rating to force a defined value
 * 
 * @return string Modified rating html
 */
function wpse_get_modified_rating_html(){
    /** @var float Rating being shown */
    $rating = 5;
    /** @var int Total number of ratings */
    $count = 1;

    $html  = \'<div class="star-rating">\';
    $html .= wc_get_star_rating_html( $rating, $count );
    $html .= \'</div>\';

    return $html;
}
add_filter( \'woocommerce_product_get_rating_html\', \'wc_get_rating_html\' );
您可以将该代码添加到主题的functions.php 或者你可以为此创建一个新插件。

记住删除生产服务器上的代码,因为它将强制所有分级显示5颗星!

结束

相关推荐