Ejemplo n.º 1
0
 /**
  * Widget
  * Display the widget in the sidebar
  * Save output to the cache if empty
  *
  * @param  array  sidebar arguments
  * @param  array  instance
  */
 public function widget($args, $instance)
 {
     // Get the most recent products from the cache
     $cache = wp_cache_get('widget_recent_products', 'widget');
     // If no entry exists use array
     if (!is_array($cache)) {
         $cache = array();
     }
     // If cached get from the cache
     if (isset($cache[$args['widget_id']])) {
         echo $cache[$args['widget_id']];
         return false;
     }
     // Start buffering
     ob_start();
     extract($args);
     // Set the widget title
     $title = apply_filters('widget_title', $instance['title'] ? $instance['title'] : __('Special Offers', 'fflcommerce'), $instance, $this->id_base);
     // Set number of products to fetch
     if (!($number = absint($instance['number']))) {
         $number = 5;
     }
     // Set up query
     $time = current_time('timestamp');
     $query_args = array('posts_per_page' => -1, 'post_type' => 'product', 'post_status' => 'publish', 'orderby' => 'rand', 'meta_query' => array(array('key' => 'visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN'), array('key' => 'sale_price_dates_from', 'value' => $time, 'compare' => '<='), array('key' => 'sale_price_dates_to', 'value' => $time, 'compare' => '>=')));
     $q = new WP_Query($query_args);
     // If there are products
     if ($q->have_posts()) {
         // Print the widget wrapper & title
         echo $before_widget;
         if ($title) {
             echo $before_title . $title . $after_title;
         }
         // Open the list
         echo '<ul class="product_list_widget">';
         // Print out each product
         for ($i = 0; $q->have_posts() && $i < $number;) {
             $q->the_post();
             // Get new fflcommerce_product instance
             $_product = new fflcommerce_product(get_the_ID());
             // Skip if not on sale
             if (!$_product->is_on_sale()) {
                 continue;
             } else {
                 $i++;
             }
             echo '<li>';
             // Print the product image & title with a link to the permalink
             echo '<a href="' . get_permalink() . '" title="' . esc_attr(get_the_title()) . '">';
             // Print the product image
             echo has_post_thumbnail() ? the_post_thumbnail('shop_tiny') : fflcommerce_get_image_placeholder('shop_tiny');
             echo '<span class="js_widget_product_title">' . get_the_title() . '</span>';
             echo '</a>';
             // Print the price with html wrappers
             echo '<span class="js_widget_product_price">' . $_product->get_price_html() . '</span>';
             echo '</li>';
         }
         echo '</ul>';
         // Close the list
         // Print closing widget wrapper
         echo $after_widget;
         // Reset the global $the_post as this query will have stomped on it
         wp_reset_postdata();
     }
     ob_get_flush();
 }