现在我使用此代码,它计算一个类别中的所有产品评级并将其显示为 5/5(200 条评论)。200 条评论来自该类别中的所有 10 个产品,并显示在类别页面中。它完美无缺,但是我试图插入代码以仅在我放入的特定类别而不是其余类别中显示它。我有 3 个类别我想要它,其余的我不想要它。
<?php
defined('ABSPATH') or die("Te pup!");
function super_plugin_install(){
//Do some installation work
}
register_activation_hook(__FILE__,'super_plugin_install');
//HOOKS
add_action('init','super_plugin_init');
/********************************************************/
/* FUNCTIONS
********************************************************/
function super_plugin_init(){
add_action( 'woocommerce_after_shop_loop','show_rating_stars' );
function show_rating_stars() {
if (is_paged()) return;
global $woocommerce, $post, $wpdb, $wp_query;
if ( comments_open() ) :
// get the query object
$cat_obj = $wp_query->get_queried_object();
if($cat_obj) {
$category_name = $cat_obj->name;
$category_desc = $cat_obj->description;
$category_ID = $cat_obj->term_id;
}
$post_ids = get_posts(array(
'numberposts' => -1, // get all posts.
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $category_ID,
),
),
'fields' => 'ids', // Only get post IDs
));
$sumrating = 0;
$sumcount = 0;
foreach ($post_ids as $pId) {
$count = $wpdb->get_var("
SELECT COUNT(meta_value) FROM $wpdb->commentmeta
LEFT JOIN $wpdb->comments ON $wpdb->commentmeta.comment_id = $wpdb->comments.comment_ID
WHERE meta_key = 'rating'
AND comment_post_ID = $pId
AND comment_approved = '1'
AND meta_value > 0
");
$sumcount = $sumcount + $count;
$rating = $wpdb->get_var("
SELECT SUM(meta_value) FROM $wpdb->commentmeta
LEFT JOIN $wpdb->comments ON $wpdb->commentmeta.comment_id = $wpdb->comments.comment_ID
WHERE meta_key = 'rating'
AND comment_post_ID = $pId
AND comment_approved = '1'
");
$sumrating = $sumrating + $rating;
}
if ( $sumcount > 0 ) :
$average = number_format($sumrating / $sumcount, 2);
$adminratingtext = esc_attr(get_option('wcr_ratings_text'));
if ($adminratingtext=='') {
$ratingstext ='';
} else {
$ratingstext ='<span class="ratings-text">'.$adminratingtext.' '.$category_name.':</span> ';
}
echo '<div itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating">'.$ratingstext.'<span itemprop="ratingValue">'.$average.'</span>/<span itemprop="bestRating">5</span> (<span itemprop="ratingCount">'.$sumcount.'</span> recenzii)</div>';
endif;
endif;
}
}
function wcr_init(){
register_setting('wcr_options','wcr_ratings_text');
}
add_action('admin_init','wcr_init');
function wcr_options_page(){
?>
<div class="wrap">
<?php screen_icon(); ?>
<h2>Woocommerce Category Rating Options</h2>
<form action="options.php" method="post" id="wcr_options_form">
<?php settings_fields('wcr_options'); ?>
<h3><label for="rating-text">Custom rating text:</label>
<input type="text" id="wcr_ratings_text" name="wcr_ratings_text" placeholder="Rating for: %category%" value="<?php echo esc_attr(get_option('wcr_ratings_text')); ?>" /></h3>
<p><input class="button-primary" type="submit" name="submit" value="Save options" /></p>
</form>
</div>
<?php
}
function wcr_plugin_menu(){
add_options_page( 'Woocommerce Category Rating Settings', 'Category Ratings', 'manage_options', 'woocommerce-category-rating-plugin', 'wcr_options_page');
}
add_action('admin_menu', 'wcr_plugin_menu');
function my_plugin_action_links( $links ) {
$links[] = '<a href="'. get_admin_url(null, 'options-general.php?page=woocommerce-category-rating-plugin') .'">Settings</a>';
return $links;
}
add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'my_plugin_action_links' );
?>