daily pastebin goal
68%
SHARE
TWEET

FoxyShop: Select a Product As A Widget

sparkweb Oct 21st, 2011 536 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. add_action('widgets_init', 'foxyshop_load_widgets_custom');
  3.  
  4. function foxyshop_load_widgets_custom() {
  5.         register_widget('FoxyShop_SingleProduct');
  6. }
  7.  
  8.  
  9. class FoxyShop_SingleProduct extends WP_Widget {
  10.  
  11.         //Widget Setup
  12.         function FoxyShop_SingleProduct() {
  13.                 $widget_ops = array( 'classname' => 'foxyshop_single-rpduct', 'description' => __('Show a ') . strtolower(FOXYSHOP_PRODUCT_NAME_SINGULAR));
  14.                 $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'foxyshop-single-product-widget' );
  15.                 $this->WP_Widget( 'foxyshop-single-product-widget', __('FoxyShop ') . FOXYSHOP_PRODUCT_NAME_SINGULAR, $widget_ops, $control_ops );
  16.         }
  17.  
  18.         //Widget Display
  19.         function widget( $args, $instance ) {
  20.                 extract( $args );
  21.  
  22.                 //Our variables from the widget settings
  23.                 $title = apply_filters('widget_title', $instance['title'] );
  24.                 $productID = $instance['productID'];
  25.                 $showMoreDetails = isset( $instance['showMoreDetails'] ) ? $instance['showMoreDetails'] : false;
  26.                 $showAddToCart = isset( $instance['showAddToCart'] ) ? $instance['showAddToCart'] : false;
  27.  
  28.                 echo $before_widget;
  29.                 if ($title) echo $before_title . $title . $after_title;
  30.  
  31.                 echo '<div class="foxyshop_category_widget">';
  32.  
  33.  
  34.  
  35.                 global $product;
  36.                 echo '<ul class="foxyshop_featured_product_list">';
  37.  
  38.                 $args = array('post_type' => 'foxyshop_product', "p" => $productID);
  39.                 $featuredlist = get_posts($args);
  40.                 foreach($featuredlist as $featuredprod) {
  41.                         $product = foxyshop_setup_product($featuredprod);
  42.                         if ($product['hide_product']) continue;
  43.  
  44.                         $thumbnailSRC = foxyshop_get_main_image("thumbnail");
  45.                         echo '<li class="foxyshop_product_box">'."\n";
  46.                         echo '<div class="foxyshop_product_image">';
  47.                         echo '<a href="' . $product['url'] . '"><img src="' . $thumbnailSRC . '" alt="' . esc_attr($product['name']) . '" class="foxyshop_main_image" /></a>';
  48.                         echo "</div>\n";
  49.  
  50.                         echo '<div class="foxyshop_product_info">';
  51.                         echo '<h2><a href="' . $product['url'] . '">' . apply_filters('the_title', $product['name']) . '</a></h2>';
  52.  
  53.                         foxyshop_price();
  54.  
  55.                         if ($showMoreDetails) echo '<a href="' . $product['url'] . '" class="foxyshop_button">' . __('More Details') . '</a>';
  56.                         if ($showAddToCart) echo '<a href="' . foxyshop_product_link("", true) . '" class="foxyshop_button">' . __('Add To Cart') . '</a>';
  57.  
  58.                         echo "</div>\n";
  59.                         echo '<div class="clr"></div>';
  60.                         echo "</li>\n";
  61.                 }
  62.                 echo "</ul><div class=\"clr\"></div>\n";
  63.  
  64.  
  65.  
  66.  
  67.                 echo '</div>';
  68.  
  69.                 echo $after_widget;
  70.         }
  71.  
  72.         //Update Widget Settings
  73.         function update( $new_instance, $old_instance ) {
  74.                 $instance = $old_instance;
  75.  
  76.                 /* Strip tags for title and name to remove HTML (important for text inputs). */
  77.                 $instance['title'] = strip_tags( $new_instance['title'] );
  78.                 $instance['productID'] = strip_tags( $new_instance['productID'] );
  79.  
  80.                 /* No need to strip tags */
  81.                 $instance['showAddToCart'] = $new_instance['showAddToCart'];
  82.                 $instance['showMoreDetails'] = $new_instance['showMoreDetails'];
  83.  
  84.                 return $instance;
  85.         }
  86.  
  87.         //Widget Control Panel
  88.         function form( $instance ) {
  89.  
  90.                 //Defaults
  91.                 $defaults = array(
  92.                         'title' => "",
  93.                         'productID' => "",
  94.                         'showAddToCart' => "",
  95.                         'showMoreDetails' => "on",
  96.                 );
  97.                 $instance = wp_parse_args( (array) $instance, $defaults ); ?>
  98.  
  99.                 <!-- Widget Title: Text Input -->
  100.                 <p>
  101.                         <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:'); ?></label>
  102.                         <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:260px;" />
  103.                 </p>
  104.  
  105.                 <!-- Select Product -->
  106.                 <p>
  107.                         <label for="<?php echo $this->get_field_id( 'productID' ); ?>"><?php _e('Product:'); ?></label>
  108.                         <select id="<?php echo $this->get_field_id( 'productID' ); ?>" name="<?php echo $this->get_field_name( 'productID' ); ?>" class="widefat" style="width:100%;">
  109.                                 <option value="">- - Select Product - -</option>
  110.                                 <?php
  111.                                
  112.                                 $args = array('post_type' => 'foxyshop_product', 'post_status' => 'publish', 'posts_per_page' => -1, 'orderby' => "name", "order" => "ASC");
  113.                                 $products = get_posts($args);
  114.                                 foreach ($products as $theproduct) {
  115.                                         echo '<option value="' . $theproduct->ID .'"';
  116.                                         if ($instance['productID'] == $theproduct->ID) echo ' selected="selected"';
  117.                                         echo '>' . $theproduct->post_title . '</option>';
  118.                                 }
  119.                                 ?>
  120.                         </select>
  121.                 </p>
  122.  
  123.                 <!-- Show Checkboxes for Button Selection -->
  124.                 <p>
  125.                         <input class="checkbox" type="checkbox" <?php checked( $instance['showAddToCart'], 'on' ); ?> id="<?php echo $this->get_field_id( 'showAddToCart' ); ?>" name="<?php echo $this->get_field_name( 'showAddToCart' ); ?>" />
  126.                         <label for="<?php echo $this->get_field_id( 'showAddToCart' ); ?>"><?php _e('Show Add To Cart Button'); ?></label>
  127.                 </p>
  128.                 <p>
  129.                         <input class="checkbox" type="checkbox" <?php checked( $instance['showMoreDetails'], 'on' ); ?> id="<?php echo $this->get_field_id( 'showMoreDetails' ); ?>" name="<?php echo $this->get_field_name( 'showMoreDetails' ); ?>" />
  130.                         <label for="<?php echo $this->get_field_id( 'showMoreDetails' ); ?>"><?php _e('Show More Details Button'); ?></label>
  131.                 </p>
  132.  
  133.  
  134.         <?php
  135.         }
  136. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top