/wp-content/plugins/woocommerce/includes/widgets/class-wc-widget-top-rated-products.php
https://gitlab.com/webkod3r/tripolis · PHP · 99 lines · 54 code · 23 blank · 22 comment · 4 complexity · a8ed9bb2dddd3cf50f90a2aa52d8243c MD5 · raw file
- <?php
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
- /**
- * Top Rated Products Widget.
- *
- * Gets and displays top rated products in an unordered list.
- *
- * @author WooThemes
- * @category Widgets
- * @package WooCommerce/Widgets
- * @version 2.3.0
- * @extends WC_Widget
- */
- class WC_Widget_Top_Rated_Products extends WC_Widget {
- /**
- * Constructor.
- */
- public function __construct() {
- $this->widget_cssclass = 'woocommerce widget_top_rated_products';
- $this->widget_description = __( 'Display a list of your top rated products on your site.', 'woocommerce' );
- $this->widget_id = 'woocommerce_top_rated_products';
- $this->widget_name = __( 'WooCommerce Top Rated Products', 'woocommerce' );
- $this->settings = array(
- 'title' => array(
- 'type' => 'text',
- 'std' => __( 'Top Rated Products', 'woocommerce' ),
- 'label' => __( 'Title', 'woocommerce' )
- ),
- 'number' => array(
- 'type' => 'number',
- 'step' => 1,
- 'min' => 1,
- 'max' => '',
- 'std' => 5,
- 'label' => __( 'Number of products to show', 'woocommerce' )
- )
- );
- parent::__construct();
- }
- /**
- * Output widget.
- *
- * @see WP_Widget
- *
- * @param array $args
- * @param array $instance
- */
- public function widget( $args, $instance ) {
- if ( $this->get_cached_widget( $args ) ) {
- return;
- }
- ob_start();
- $number = ! empty( $instance['number'] ) ? absint( $instance['number'] ) : $this->settings['number']['std'];
- add_filter( 'posts_clauses', array( WC()->query, 'order_by_rating_post_clauses' ) );
- $query_args = array( 'posts_per_page' => $number, 'no_found_rows' => 1, 'post_status' => 'publish', 'post_type' => 'product' );
- $query_args['meta_query'] = WC()->query->get_meta_query();
- $r = new WP_Query( $query_args );
- if ( $r->have_posts() ) {
- $this->widget_start( $args, $instance );
- echo '<ul class="product_list_widget">';
- while ( $r->have_posts() ) {
- $r->the_post();
- wc_get_template( 'content-widget-product.php', array( 'show_rating' => true ) );
- }
- echo '</ul>';
- $this->widget_end( $args );
- }
- remove_filter( 'posts_clauses', array( WC()->query, 'order_by_rating_post_clauses' ) );
- wp_reset_postdata();
- $content = ob_get_clean();
- echo $content;
- $this->cache_widget( $args, $content );
- }
- }