- The limitation of raw average ratings
- The solution: Bayesian Weighted Rating
- The new meta key: _init_review_weighted
- How the Bayesian Weighted Rating formula works
- Clear separation between display and ranking
- WP_Query examples using _init_review_weighted
- Sort posts by the most reliable rating score
- Retrieve posts with a weighted score of 4.5 or higher
- Combine weighted score with minimum vote count
- Conclusion
This article explains why the new meta key was added, how it differs from the traditional average rating, and how to properly use _init_review_weighted in real-world WP_Query scenarios.
The limitation of raw average ratings
In previous versions, Init Review System stored rating data using three meta keys:
_init_review_total: total accumulated score_init_review_count: number of valid votes_init_review_avg: average rating (rounded to two decimals)
This structure is efficient for display and filtering, but it has a critical flaw: the average rating alone does not represent data reliability.
A post with a single 5★ vote will rank higher than a post rated 4.9★ with 1,000 votes. When rankings rely solely on _init_review_avg, the result is misleading and easily manipulated.
The solution: Bayesian Weighted Rating
To address this issue properly, Init Review System 1.14 adopts Bayesian Weighted Rating, a proven method used by large-scale platforms such as IMDb, MyAnimeList, and Steam.
Instead of relying only on the local average, this approach combines:
- The post’s average rating
- The total number of votes
- The global average rating across the system
- A minimum vote threshold to establish confidence
The result is a confidence-adjusted ranking score that better reflects both quality and statistical reliability.
The new meta key: _init_review_weighted
From version 1.14 onward, every vote submission automatically generates and stores:
_init_review_weighted: the Bayesian-weighted ranking score
This meta key has several important characteristics:
- Calculated on vote submission (on-write), not during queries.
- Serves as the official score for sorting and ranking.
- Keeps
_init_review_avgintact for UI display purposes. - Fully backward compatible with existing data and integrations.
How the Bayesian Weighted Rating formula works
The _init_review_weighted meta key is calculated using the Bayesian Weighted Rating formula, a statistical method designed to balance score quality with data confidence.
The formula is defined as:
WR = (v / (v + m)) × R + (m / (v + m)) × C
Where:
R: the post’s average rating (_init_review_avg)v: the number of valid votes (_init_review_count)C: the global average rating across the systemm: the minimum vote threshold required for confidence
What this formula means in practice:
- When
vis small, the weighted score is pulled toward the global average (C). - As
vgrows, the weighted score converges toward the post’s true average (R).
This ensures that posts with very few votes cannot dominate rankings unfairly, while posts with a large number of votes are ranked according to their proven quality.
The m parameter can be customized via the init_plugin_suite_review_system_min_votes_threshold filter to match the scale and voting behavior of each website.
Clear separation between display and ranking
With the introduction of _init_review_weighted, the rating architecture is now cleanly separated:
- UI display: use
_init_review_avg - Filtering and ranking: use
_init_review_weighted
This separation simplifies frontend logic, improves query performance, and ensures ranking results are no longer distorted by low-sample ratings.
WP_Query examples using _init_review_weighted
Sort posts by the most reliable rating score
new WP_Query([
'post_type' => 'post',
'meta_key' => '_init_review_weighted',
'orderby' => 'meta_value_num',
'order' => 'DESC',
]);
Retrieve posts with a weighted score of 4.5 or higher
new WP_Query([
'post_type' => 'post',
'meta_query' => [
[
'key' => '_init_review_weighted',
'value' => 4.5,
'type' => 'NUMERIC',
'compare' => '>=',
]
],
]);
Combine weighted score with minimum vote count
new WP_Query([
'post_type' => 'post',
'meta_query' => [
'relation' => 'AND',
[
'key' => '_init_review_weighted',
'value' => 4.5,
'type' => 'NUMERIC',
'compare' => '>=',
],
[
'key' => '_init_review_count',
'value' => 50,
'type' => 'NUMERIC',
'compare' => '>=',
],
],
'meta_key' => '_init_review_weighted',
'orderby' => 'meta_value_num',
'order' => 'DESC',
]);
Conclusion
The introduction of _init_review_weighted marks an important evolution of Init Review System: from a simple rating display tool to a fully-fledged rating engine.
By clearly separating display data from ranking data, the plugin delivers better performance, stronger spam resistance, and statistically reliable ranking results — even at scale.
If you are building serious top lists, ranking pages, or review-driven platforms, _init_review_weighted is now the meta key you should rely on.
Comments