Title: eshop-widget.php
Last modified: August 22, 2016

---

# eshop-widget.php

 *  Resolved [Вячеслав](https://wordpress.org/support/users/slavyan/)
 * (@slavyan)
 * [11 years, 10 months ago](https://wordpress.org/support/topic/eshop-widgetphp/)
 * eshop widget (eShop Cart) doesn’t work at the site.ru/shopping-cart and site.
   ru/shopping-cart/checkout pages. How to include it on these pages of the site?
 *     ```
       <?php
       function eshopwidgets_init(){
       	//register_widget('eshop_widget');
       	register_widget('eshop_cart_widget');
       	register_widget('eshop_pay_widget');
       	register_widget('eshop_products_widget');
       	register_widget('eshop_search_widget');
       }
       add_action("widgets_init", "eshopwidgets_init");
   
       /* *************************
       ** Main eShop cart widget **
       **************************/
       class eshop_widget extends WP_Widget {
   
       	function eshop_widget() {
       		$widget_ops = array('classname' => 'eshop-widget eshopcart_widget', 'description' => __('Displays a simplified or full cart','eshop'));
       		$this->WP_Widget('eshopw_cart', __('eShop Cart','eshop'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
       		global $blog_id,$eshopoptions;
       		$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
       		$show = apply_filters( 'widget_text', $instance['show'], $instance );
       		$showwhat = apply_filters( 'widget_text', $instance['showwhat'], $instance );
       		$text = apply_filters( 'widget_text', $instance['text'], $instance );
   
       		if(isset($_SESSION['eshopcart'.$blog_id])){
       			$eshopsize=0;
       			$eshopqty=0;
       			if(isset($_SESSION['eshopcart'.$blog_id])){
       				$eshopsize=sizeof($_SESSION['eshopcart'.$blog_id]);
   
       				foreach($_SESSION['eshopcart'.$blog_id] as $eshopdo=>$eshopwop){
       					$eshopqty+=$eshopwop['qty'];
       				}
       				if($showwhat=='full'){
       					$eecho='<div class="eshopcartwidget"><div class="ajaxcart">'.display_cart($_SESSION['eshopcart'.$blog_id],false, $eshopoptions['checkout'],'widget').'</div>';
       					$eecho .='</div>';
       				}else{
       					$eecho='<p class="eshopwidget">';
       					if($showwhat=='items' || $showwhat=='both'){
       						$eecho .=sprintf(_n('<span>%d</span> product in cart.','<span>%d</span> products in cart.',$eshopsize,'eshop'),$eshopsize);
       					}
       					if($showwhat=='qty' || $showwhat=='both'){
       						if($showwhat=='both') $eecho.= '<br />';
       						$eecho .=sprintf(_n('<span>%d</span> item in cart.','<span>%d</span> items in cart.',$eshopqty,'eshop'),$eshopqty);
       					}
       					$eecho.= '<br /><a class="cartlink" href="'.get_permalink($eshopoptions['cart']).'">'.__('View Cart','eshop').'</a>';
       				$eecho .='<br /><a class="checkoutlink" href="'.get_permalink($eshopoptions['checkout']).'"> '.__('Checkout','eshop').'</a>';
       					$eecho .='</p>';
       				}			
   
       				echo $before_widget;
       				echo $before_title.$title.$after_title;
       				echo $eecho;
       				echo $after_widget;
       			}
       		}elseif($show!='no'){
       			$eecho= '<div class="ajaxcart">'.$text.'</div><p><a class="cartlink" href="'.get_permalink($eshopoptions['cart']).'">'.__('View Cart','eshop').'</a>';
       			$eecho .='<br /><a class="checkoutlink" href="'.get_permalink($eshopoptions['checkout']).'">'.__('Checkout','eshop').'</a></p>';
       			echo $before_widget;
       			echo $before_title.$title.$after_title;
       			echo $eecho;
       			echo $after_widget;
       		}else{
       			if($showwhat=='full'){
       				echo $before_widget;
       				//echo $before_title.$title.$after_title;
       				echo '<div class="eshopcartwidget"><div class="ajaxcart"></div></div>';
       				echo $after_widget;
       			}
       		}
       	}
   
       	function update( $new_instance, $old_instance ) {
       		$instance = $old_instance;
       		$instance['title'] = strip_tags( $new_instance['title'] );
       		$instance['show'] = strip_tags( $new_instance['show'] );
       		$instance['showwhat'] = strip_tags( $new_instance['showwhat'] );
       		$instance['text'] = strip_tags( $new_instance['text'] );
       		return $instance;
       	}
   
       	function form( $instance ) {
       		$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'show'=>'no', 'showwhat'=>'items', 'text'=>'') );
       		$title = strip_tags($instance['title']);
       		$show = $instance['show'];
       		$showwhat = $instance['showwhat'];
       		$text = $instance['text'];
       		?>
       		 <p>
       		    <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
       		    <input type="text" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr($title);?>" />
       		 </p>
       		 <p>
       		  	<label for="<?php echo $this->get_field_id('show'); ?>"><?php _e('Show when empty','eshop'); ?></label>
       		  	<select id="<?php echo $this->get_field_id('show'); ?>" name="<?php echo $this->get_field_name('show'); ?>">
       		  	<option value="yes"<?php selected( $show, 'yes' ); ?>><?php _e('Yes','eshop'); ?></option>
       		  	<option value="no"<?php selected( $show, 'no' ); ?>><?php _e('No','eshop'); ?></option>
       			</select><br />
       			<label for="<?php echo $this->get_field_id('showwhat'); ?>"><?php _e('What to show','eshop'); ?></label>
       			<select id="<?php echo $this->get_field_id('showwhat'); ?>" name="<?php echo $this->get_field_name('showwhat'); ?>">
       			<option value="items"<?php selected( $showwhat, 'items' ); ?>><?php _e('Total number of different products','eshop'); ?></option>
       			<option value="qty"<?php selected( $showwhat, 'qty' ); ?>><?php _e('Total number of different items','eshop'); ?></option>
       			<option value="both"<?php selected( $showwhat, 'both' ); ?>><?php _e('Both','eshop'); ?></option>
       			<option value="full"<?php selected( $showwhat, 'full' ); ?>><?php _e('Full Cart','eshop'); ?></option>
       			</select>
       		</p>
       		<p>
       		    <label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Text to show when Cart is empty:','eshop'); ?></label>
       		    <input type="text" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" value="<?php echo esc_attr($text);?>" />
       		</p>
       	<?php
       	}
       }
   
       /* *********************************************
       ** Main eShop cart widget - new and improved **
       *********************************************** */
       class eshop_cart_widget extends WP_Widget {
   
       	function eshop_cart_widget() {
       		$widget_ops = array('classname' => 'eshop-widget eshopcarti_widget', 'description' => __('Displays eShop cart','eshop'));
       		$this->WP_Widget('eshopwi_cart', __('eShop Cart (Improved)','eshop'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
       		global $blog_id,$eshopoptions;
       		$eshopsw=true;
       		if (get_the_ID() == $eshopoptions['cart'] || get_the_ID() == $eshopoptions['checkout'])
       			$eshopsw=apply_filters('eshopshowcartoncart',false);
       		if ($eshopsw){
       			$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
       			$show = apply_filters( 'widget_text', $instance['show'], $instance );
       			$showwhat = apply_filters( 'widget_text', $instance['showwhat'], $instance );
       			$text = apply_filters( 'widget_text', $instance['text'], $instance );
       			$items = apply_filters( 'widget_text', $instance['items'], $instance );
       			$qty = apply_filters( 'widget_text', $instance['qty'], $instance );
       			$total = apply_filters( 'widget_text', $instance['total'], $instance );
       			//$fc=apply_filters( 'widget_text', $instance['fc'], $instance );
       			//$fcimg=apply_filters( 'widget_text', $instance['fcimg'], $instance );
   
       			$currsymbol=$eshopoptions['currency_symbol'];
       			if(isset($_SESSION['eshopcart'.$blog_id])){
       				$eshopsize=0;
       				$eshopqty=0;
       				$thetotal=0;
       				if(isset($_SESSION['eshopcart'.$blog_id])){
       					$eshopsize=sizeof($_SESSION['eshopcart'.$blog_id]);
   
       					foreach($_SESSION['eshopcart'.$blog_id] as $eshopdo=>$eshopwop){
       						$eshopqty+=$eshopwop['qty'];
       					}
   
       					if(isset($_SESSION['final_price'.$blog_id])) $thetotal=$_SESSION['final_price'.$blog_id];
   
       					$eshoptotal=sprintf( __('%2$s %1$s','eshop'), $currsymbol, number_format_i18n($thetotal,__('2','eshop')));
       					if($showwhat=='full'){
       						$eecho='<div class="eshopcartwidget"><div class="ajaxcart">'.display_cart($_SESSION['eshopcart'.$blog_id],false, $eshopoptions['checkout'],'widget').'';
       						$eecho .='</div></div>';
       					}else{
       						$any=0;
       					/*	$eecho='<p class="eshopwidget">'; */
   
       	 	                                if(isset($items) & $items=='1' ){
       							$eecho .=sprintf(_n('В заказе <a class="cartlink" href="'.get_permalink($eshopoptions['cart']).'"><span>%d</span> товар на сумму</a>','В заказе <a class="cartlink" href="'.get_permalink($eshopoptions['cart']).'"><span>%d</span> товара на сумму</a>',$eshopsize,'eshop'),$eshopsize);
       							$any++;
       						}
   
       						if(isset($qty) & $qty=='1'){
       							if($any>0) $eecho.= '<br />';
       							$eecho .=sprintf(_n('<span>%d</span> item in cart.','<span>%d</span> items in cart.',$eshopqty,'eshop'),$eshopqty);
       							$any++;
       						}
       						if(isset($total) & $total=='1'){
       							if($any>0) $eecho.= ' ';
       							$eecho .=sprintf(__('<span>%s</span>','eshop'),$eshoptotal);
       						}
       						/* $eecho.= '<br /><a class="cartlink" href="'.get_permalink($eshopoptions['cart']).'">'.__('View Cart','eshop').'</a>';
       						$eecho .='<br /><a class="checkoutlink" href="'.get_permalink($eshopoptions['checkout']).'">'.__('Checkout','eshop').'</a>'; */
       						/* $eecho .='</p>'; */
       					}			
   
       					echo $before_widget;
       					echo $before_title.$title.$after_title;
       					echo $eecho;
       					echo $after_widget;
       				}
       			}elseif($show!='no'){
       				$eecho='';
       				if($showwhat=='full')
       					$eecho .= '<div class="ajaxcart">';
       				$eecho .= ''.$text.'В вашей корзине еще нет товаров';
   
       /* ссылка Подсчёт стоимости сделанных покупок $eecho .='<br /><a class="checkoutlink" href="'.get_permalink($eshopoptions['checkout']).'">'.__('Checkout','eshop').'</a>'; */
   
       				if($showwhat=='full')
       					$eecho .= '</div>';
       				echo $before_widget;
       				echo $before_title.$title.$after_title;
       				echo $eecho;
       				echo $after_widget;
       			}else{
       				if($showwhat=='full'){
       					echo $before_widget;
       					//echo $before_title.$title.$after_title;
       					echo '<div class="eshopcartwidget"><div class="ajaxcart"></div></div>';
       					echo $after_widget;
       				}
       			}
       		}
       	}
   
       	function update( $new_instance, $old_instance ) {
       		$instance = $old_instance;
       		$instance['title'] = strip_tags( $new_instance['title'] );
       		$instance['show'] = strip_tags( $new_instance['show'] );
       		$instance['showwhat'] = strip_tags( $new_instance['showwhat'] );
   
       		$instance['qty']=$instance['items']=$instance['total'] = '';
   
       		if(isset($new_instance['total']))
       			$instance['total'] = strip_tags( $new_instance['total'] );
       		if(isset($new_instance['items']))
       			$instance['items'] = strip_tags( $new_instance['items'] );
       		if(isset($new_instance['qty']))
       			$instance['qty'] = strip_tags( $new_instance['qty'] );
   
       		$instance['fc'] = strip_tags( $new_instance['fc'] );
       		$instance['fcimg'] = strip_tags( $new_instance['fcimg'] );
       		$instance['text'] = strip_tags( $new_instance['text'] );
   
       		//need access elsewhere - restricts to one setting sadly.
       		$eshopoptions = get_option('eshop_plugin_settings');
       		$eshopoptions['widget_cart_type']=$instance['fc'];
       		$eshopoptions['widget_cart_img']=$instance['fcimg'];
       		update_option('eshop_plugin_settings',$eshopoptions);
   
       		return $instance;
       	}
   
       	function form( $instance ) {
       		$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'show'=>'no', 'showwhat'=>'', 'text'=>'', 'items'=>'','qty'=>'','total'=>'','fc'=>'2','fcimg'=>'') );
       		$title = strip_tags($instance['title']);
       		$show = $instance['show'];
       		$showwhat = $instance['showwhat'];
       		$items = $instance['items'];
       		$qty = $instance['qty'];
       		$total = $instance['total'];
       		$text = $instance['text'];
       		$fc=$instance['fc'];
       		$fcimg=$instance['fcimg'];
       		?>
       		 <p>
       		    <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
       		    <input type="text" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr($title);?>" />
       		 </p>
       		 <p>
       		 	<label for="<?php echo $this->get_field_id('showwhat'); ?>"><?php _e('What to show','eshop'); ?></label>
       		 	<select id="<?php echo $this->get_field_id('showwhat'); ?>" name="<?php echo $this->get_field_name('showwhat'); ?>">
       		 	<option value="both"<?php selected( $showwhat, 'both' ); ?>><?php _e('Just totals','eshop'); ?></option>
       		 	<option value="full"<?php selected( $showwhat, 'full' ); ?>><?php _e('Full Cart','eshop'); ?></option>
       			</select><br />
       		  	<label for="<?php echo $this->get_field_id('show'); ?>"><?php _e('Show when empty','eshop'); ?></label>
       		  	<select id="<?php echo $this->get_field_id('show'); ?>" name="<?php echo $this->get_field_name('show'); ?>">
       		  	<option value="yes"<?php selected( $show, 'yes' ); ?>><?php _e('Yes','eshop'); ?></option>
       		  	<option value="no"<?php selected( $show, 'no' ); ?>><?php _e('No','eshop'); ?></option>
       			</select><br />
       		<p>Just Totals:<br />
       			<input type="checkbox" value="1" <?php checked( $items, '1' ); ?> id="<?php echo $this->get_field_id('items'); ?>" name="<?php echo $this->get_field_name('items'); ?>" /><label for="<?php echo $this->get_field_id('items'); ?>"><?php _e('Total Number of Items','eshop'); ?></label><br />
       			<input type="checkbox" value="1" <?php checked( $qty, '1' ); ?> id="<?php echo $this->get_field_id('qty'); ?>" name="<?php echo $this->get_field_name('qty'); ?>" /><label for="<?php echo $this->get_field_id('qty'); ?>"><?php _e('Total Quantity of Items','eshop'); ?></label><br />
       			<input type="checkbox" value="1" <?php checked( $total, '1' ); ?> id="<?php echo $this->get_field_id('total'); ?>" name="<?php echo $this->get_field_name('total'); ?>" /><label for="<?php echo $this->get_field_id('total'); ?>"><?php _e('Cart Total','eshop'); ?></label><br />
       		</p>
       		<p><label for="<?php echo $this->get_field_id('fc'); ?>">Full Cart</label><br />
       			<select id="<?php echo $this->get_field_id('fc'); ?>" name="<?php echo $this->get_field_name('fc'); ?>">
       				<option value="0" <?php selected( $fc, '0' ); ?>><?php _e('Image + Text','eshop'); ?></option>
       				<option value="1" <?php selected( $fc, '1' ); ?>><?php _e('Image','eshop'); ?></option>
       				<option value="2" <?php selected( $fc, '2' ); ?>><?php _e('Text','eshop'); ?></option>
       			</select><br />
       			<label for="<?php echo $this->get_field_id('fcimg'); ?>"><?php _e('% size image to display','eshop'); ?></label>
       			   <input type="text" id="<?php echo $this->get_field_id('fcimg'); ?>" name="<?php echo $this->get_field_name('fcimg'); ?>" value="<?php echo esc_attr($fcimg);?>" />
   
       		</p>
       		<p>
       		    <label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Text to show when Cart is empty:','eshop'); ?></label>
       		    <input type="text" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" value="<?php echo esc_attr($text);?>" />
       		</p>
       	<?php
       	}
       }
   
       /* *******************************
       ** eShop payment options widget **
       ******************************** */
       class eshop_pay_widget extends WP_Widget {
   
       	function eshop_pay_widget() {
       		$widget_ops = array('classname' => 'eshop-widget eshoppay_widget', 'description' => __('Displays accepted payment logos','eshop'));
       		$this->WP_Widget('eshopw_pay', __('eShop Payments Accepted','eshop'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
       		global $blog_id,$eshopoptions;
       		$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
       		echo $before_widget;
       		echo $before_title.$title.$after_title;
       		if(is_array($eshopoptions['method'])){
       			$i=1;
       			$replace = array(".");
       			$eshopfiles=eshop_files_directory();
       			echo "\n".'<ul class="eshoppaywidget">'."\n";
       			foreach($eshopoptions['method'] as $k=>$eshoppayment){
       				$eshoppayment_text=$eshoppayment;
       				$eshoppayment = str_replace($replace, "", $eshoppayment);
       				if($eshoppayment_text=='cash'){
       					$eshopcash = $eshopoptions['cash'];
       					if($eshopcash['rename']!='')
       						$eshoppayment_text=$eshopcash['rename'];
       				}
       				if($eshoppayment_text=='bank'){
       					$eshopbank = $eshopoptions['bank'];
       					if($eshopbank['rename']!='')
       						$eshoppayment_text=$eshopbank['rename'];
       				}
       				$eshopmi=apply_filters('eshop_merchant_img_'.$eshoppayment,array('path'=>$eshopfiles['0'].$eshoppayment.'.png','url'=>$eshopfiles['1'].$eshoppayment.'.png'));
       				$eshopmerchantimgpath=$eshopmi['path'];
       				$eshopmerchantimgurl=$eshopmi['url'];
       				$dims='';
       				if(file_exists($eshopmerchantimgpath))
       					$dims=getimagesize($eshopmerchantimgpath);
       				echo '<li><img src="'.$eshopmerchantimgurl.'" '.$dims[3].' alt="'.__('Pay via','eshop').' '.$eshoppayment_text.'" title="'.__('Pay via','eshop').' '.$eshoppayment_text.'" /></li>'."\n";
       				$i++;
       			}
       			echo "</ul>\n";
       		}
       		echo $after_widget;
       	}
   
       	function update( $new_instance, $old_instance ) {
       		$instance = $old_instance;
       		$instance['title'] = strip_tags($new_instance['title']);
       		return $instance;
       	}
   
       	function form( $instance ) {
       		$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
       		$title = strip_tags($instance['title']);
       		?>
       		 <p>
       		    <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
       		    <input type="text" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr($title);?>" />
       		 </p>
   
       	<?php
       	}
       }
   
       /* **************************
       **  eShop products widget  **
       *************************** */
       class eshop_products_widget extends WP_Widget {
   
       	function eshop_products_widget() {
       		$widget_ops = array('classname' => 'eshop-widget eshopproducts_widget', 'description' => __('Displays products','eshop'));
       		$this->WP_Widget('eshopw_prod', __('eShop Products','eshop'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
       		global $blog_id;
       		$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
       		$show_size = $instance['show_size'];
       		$show_id = $instance['show_id'];
       		$show_type = $instance['show_type'];
       		$show_what = $instance['show_what'];
       		$order_by = $instance['order_by'];
       		$show_amts = $instance['show_amts'];
       		if($show_type==1) $stype='yes';
       		else $stype='no';
       		echo $before_widget;
       		echo $before_title.$title.$after_title;
       		switch($show_what){
       			case '1'://featured
       				echo eshopw_w_featured(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size,'sortby'=>$order_by));
       				break;
       			case '2'://new
       				echo eshopw_list_new(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size));
       				break;
       			case '3'://random
       				echo eshopw_list_random(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size));
       				break;
       			case '4'://show specific products
       				echo eshopw_show_product(array('id'=>$show_id,'images'=>$stype,'size'=>$show_size));
       				break;
       			case '5'://show best sellers
       				echo eshopw_best_sellers(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size));
       				break;
       			case '6'://show catname
       				echo eshopw_list_cat_tags(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size,'type'=>'category_name','id'=>$show_id,'sortby'=>$order_by));
       				break;
       			case '7'://show cat id
       				echo eshopw_list_cat_tags(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size,'type'=>'cat','id'=>$show_id,'sortby'=>$order_by));
       				break;
       			case '8'://show tags
       				echo eshopw_list_cat_tags(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size,'type'=>'tag','id'=>$show_id,'sortby'=>$order_by));
       				break;
       			case '9'://show tag id
       				echo eshopw_list_cat_tags(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size,'type'=>'tag_id','id'=>$show_id,'sortby'=>$order_by));
       				break;
       			case '10'://sale
       				echo eshopw_w_sale(array('images'=>$stype,'show'=>$show_amts,'size'=>$show_size,'sortby'=>$order_by));
       				break;
       		}
       		echo $after_widget;
       	}
   
       	function update( $new_instance, $old_instance ) {
       		$instance = $old_instance;
       		$instance['title'] = strip_tags($new_instance['title']);
       		$instance['show_size'] = strip_tags($new_instance['show_size']);
       		$instance['show_id'] = $new_instance['show_id'];
       		$instance['show_type'] = strip_tags($new_instance['show_type']);
       		$instance['show_what'] = strip_tags($new_instance['show_what']);
       		$instance['order_by'] = strip_tags($new_instance['order_by']);
       		$instance['show_amts'] = strip_tags($new_instance['show_amts']);
       		if(!is_numeric($instance['show_size'])) $instance['show_size']='';
       		return $instance;
       	}
   
       	function form( $instance ) {
       		$instance = wp_parse_args( (array) $instance, array( 'title' => '','show_size'=>'','show_id'=>'','show_type'=>'','show_what'=>'','order_by'=>'','show_amts'=>'',) );
       		$title = strip_tags($instance['title']);
       		$show_size=$instance['show_size'];
       		$show_id=$instance['show_id'];
       		$show_type=$instance['show_type'];
       		$show_what=$instance['show_what'];
       		$order_by=$instance['order_by'];
       		$show_amts=$instance['show_amts'];
       		?>
       		<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title','eshop'); ?></label>
       		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
       		</p>
       		<p><label for="<?php echo $this->get_field_id('show_type'); ?>"><?php _e('Images or text','eshop'); ?></label>
       			<select id="<?php echo $this->get_field_id('show_type'); ?>" name="<?php echo $this->get_field_name('show_type'); ?>">
       			<option value="1"<?php selected( $show_type, '1' ); ?>><?php _e('Images','eshop'); ?></option>
       			<option value="2"<?php selected( $show_type, '2' ); ?>><?php _e('Text','eshop'); ?></option>
       		</select></p>
       		<p><label for="<?php echo $this->get_field_id('show_size'); ?>"><?php _e('% size image to display','eshop'); ?></label>
       			<input size="3" maxlength="3" id="<?php echo $this->get_field_id('show_size'); ?>" name="<?php echo $this->get_field_name('show_size'); ?>" type="text" value="<?php echo $show_size; ?>" />
       		</p>
       		<p><label for="<?php echo $this->get_field_id('show_what'); ?>"><?php _e('What to show','eshop'); ?></label>
       			<select id="<?php echo $this->get_field_id('show_what'); ?>" name="<?php echo $this->get_field_name('show_what'); ?>">
       			<option value="1"<?php selected( $show_what, '1' ); ?>><?php _e('Featured','eshop'); ?></option>
       			<option value="2"<?php selected( $show_what, '2' ); ?>><?php _e('New','eshop'); ?></option>
       			<option value="3"<?php selected( $show_what, '3' ); ?>><?php _e('Random','eshop'); ?></option>
       			<option value="4"<?php selected( $show_what, '4' ); ?>><?php _e('Specific products','eshop'); ?></option>
       			<option value="5"<?php selected( $show_what, '5' ); ?>><?php _e('Best Sellers','eshop'); ?></option>
       			<option value="6"<?php selected( $show_what, '6' ); ?>><?php _e('Category names','eshop'); ?></option>
       			<option value="7"<?php selected( $show_what, '7' ); ?>><?php _e('Category ID','eshop'); ?></option>
       			<option value="8"<?php selected( $show_what, '8' ); ?>><?php _e('Tags','eshop'); ?></option>
       			<option value="9"<?php selected( $show_what, '9' ); ?>><?php _e('Tag ID','eshop'); ?></option>
       			<option value="10"<?php selected( $show_what, '10' ); ?>><?php _e('Sale','eshop'); ?></option>
       		</select></p>
       		<p><label for="<?php echo $this->get_field_id('order_by'); ?>"><?php _e('Featured/Sale Order by','eshop'); ?></label>
       				<select id="<?php echo $this->get_field_id('order_by'); ?>" name="<?php echo $this->get_field_name('order_by'); ?>">
       				<option value="1"<?php selected( $order_by, '1' ); ?>><?php _e('Title','eshop'); ?></option>
       				<option value="2"<?php selected( $order_by, '2' ); ?>><?php _e('Menu Order','eshop'); ?></option>
       				<option value="3"<?php selected( $order_by, '3' ); ?>><?php _e('Date Ascending','eshop'); ?></option>
       				<option value="4"<?php selected( $order_by, '4' ); ?>><?php _e('Date Descending','eshop'); ?></option>
       		</select></p>
       		<p><label for="<?php echo $this->get_field_id('show_amts'); ?>"><?php _e('How many to show','eshop'); ?></label>
       			<select id="<?php echo $this->get_field_id('show_amts'); ?>" name="<?php echo $this->get_field_name('show_amts'); ?>">
       			<?php
       			for($i=1;$i<=10;$i++){
       			?>
       				<option value="<?php echo $i; ?>"<?php selected( $show_amts, $i ); ?>><?php echo $i; ?></option>
       			<?php
       			}
       			?>
       		</select></p>
       		<p><label for="<?php echo $this->get_field_id('show_id'); ?>"><?php _e('Page, Post, Tag & Category IDs or Tag/Category names - comma separated','eshop'); ?></label>
       			<input class="widefat" id="<?php echo $this->get_field_id('show_id'); ?>" name="<?php echo $this->get_field_name('show_id'); ?>" type="text" value="<?php echo $show_id; ?>" />
       		</p>
       	<?php
       	}
       }
   
       /********************************************************************** */
       /* functions for widgets above - similar but not the same as shortcodes */
       /* ******************************************************************** */
       function eshopw_list_new($atts){
       	global $wpdb, $post;
       	extract(shortcode_atts(array('class'=>'eshopw_new','images'=>'no','show'=>'6','size'=>''), $atts));
       	$pages=$wpdb->get_results("SELECT $wpdb->postmeta.post_id, $wpdb->posts.* from $wpdb->postmeta,$wpdb->posts WHERE $wpdb->postmeta.meta_key='_eshop_stock' AND $wpdb->posts.ID=$wpdb->postmeta.post_id AND $wpdb->posts.post_status='publish' order by post_date DESC limit $show");
       	if($pages) {
       		if($images=='no'){
       			$echo = eshopw_listpages($pages,$class);
       		}else{
       			$class='eshopw_panels';
       			$echo = eshopw_listpanels($pages,$class,$size);
       		}
       		return $echo;
       	}
       	return;
       }
       function eshopw_best_sellers($atts){
       	global $wpdb, $post;
       	$stktable=$wpdb->prefix.'eshop_stock';
       	extract(shortcode_atts(array('class'=>'eshopw_best','images'=>'no','show'=>'6','size'=>''), $atts));
       	/*
       	$pages=$wpdb->get_results("SELECT $wpdb->postmeta.post_id, $wpdb->posts.*
       	from $wpdb->postmeta,$wpdb->posts, $stktable as stk
       	WHERE $wpdb->postmeta.meta_key='_eshop_stock'
       	AND $wpdb->posts.ID=$wpdb->postmeta.post_id AND $wpdb->posts.post_status='publish' AND stk.post_id=$wpdb->posts.ID
       	order by stk.purchases DESC limit $show");
       	*/
       	$pages=$wpdb->get_results("SELECT $wpdb->postmeta.post_id, $wpdb->posts.*
       		FROM $wpdb->postmeta,$wpdb->posts
       		JOIN(SELECT post_id as daids FROM $stktable GROUP BY post_id ORDER BY sum(purchases) DESC LIMIT $show) j
       		WHERE $wpdb->postmeta.meta_key='_eshop_stock'
       		AND $wpdb->posts.ID=$wpdb->postmeta.post_id
       		AND $wpdb->posts.post_status='publish'
       		AND $wpdb->posts.ID IN(daids)
       		ORDER BY FIELD( $wpdb->posts.ID,daids)
       		LIMIT $show");
   
       	if($pages) {
       		if($images=='no'){
       			$echo = eshopw_listpages($pages,$class);
       		}else{
       			$class='eshopw_panels';
       			$echo = eshopw_listpanels($pages,$class,$size);
       		}
       		return $echo;
       	}
       	return;
       } 
   
       function eshopw_w_featured($atts){
       	return eshopw_list_featured_sale($atts);
       }
       function eshopw_w_sale($atts){
       	return eshopw_list_featured_sale($atts, 'sale');
       }
   
       function eshopw_list_featured_sale($atts, $type='featured'){
       	global $wpdb, $post;
       	$paged=$post;
       	extract(shortcode_atts(array('class'=>'eshopw_'.$type,'images'=>'no','show'=>'6','size'=>'','sortby'=>'1'), $atts));
   
       	switch ($sortby){
       		case '2'://menu order
       			$orderby='p.menu_order';
       			$order= 'ASC';
       			break;
       		case '3'://date asc
       			$orderby='p.post_date';
       			$order= 'ASC';
       			break;
       		case '4'://date desc
       			$orderby='p.post_date';
       			$order= 'DESC';
       			break;
       		case '1'://title
       		default:
       			$orderby='p.post_title';
       			$order= 'ASC';
       			break;
       	}
       	$pages=$wpdb->get_results("SELECT p.* from $wpdb->postmeta as pm,$wpdb->posts as p WHERE pm.meta_key='_eshop_".$type."' AND p.post_status='publish' AND p.ID=pm.post_id ORDER BY $orderby $order LIMIT $show");
       	if($pages) {
       		if($images=='no'){
       			$echo = eshopw_listpages($pages,$class);
       		}else{
       			$class='eshopw_panels';
       			$echo = eshopw_listpanels($pages,$class,$size);
       		}
       		$post=$paged;
       		return $echo;
       	}
       	$post=$paged;
       	return;
       }
       function eshopw_list_random($atts){
       	global $wpdb, $post;
       	$paged=$post;
       	extract(shortcode_atts(array('class'=>'eshopw_random','images'=>'no','show'=>'6','size'=>''), $atts));
       	$pages=$wpdb->get_results("SELECT $wpdb->postmeta.post_id, $wpdb->posts.* from $wpdb->postmeta,$wpdb->posts WHERE $wpdb->postmeta.meta_key='_eshop_stock' AND $wpdb->posts.ID=$wpdb->postmeta.post_id AND $wpdb->posts.post_status='publish' order by rand() limit $show");
       	if($pages) {
       		if($images=='no'){
       			$echo = eshopw_listpages($pages,$class);
       		}else{
       			$class='eshopw_panels';
       			$echo = eshopw_listpanels($pages,$class,$size);
       		}
       		$post=$paged;
       		return $echo;
       	}
       	$post=$paged;
       	return;
       }
       function eshopw_show_product($atts){
       	global $wpdb, $post;
       	extract(shortcode_atts(array('id'=>'0','class'=>'eshopw_prod','images'=>'no','size'=>''), $atts));
       	if($id!=0){
       		$epages=array();
       		$theids = explode(",", $id);
       		foreach($theids as $thisid){
       			$thispage=$wpdb->get_results("SELECT $wpdb->postmeta.post_id, $wpdb->posts.* from $wpdb->postmeta,$wpdb->posts WHERE $wpdb->posts.ID=$wpdb->postmeta.post_id AND $wpdb->posts.post_status='publish' AND $wpdb->posts.ID='$thisid'");
       			if(sizeof($thispage)>0)//only add if it exists
       				array_push($epages,$thispage['0']);
       		}
       		if(sizeof($epages)>0){//if nothing found - don't do this
       			if($images=='no'){
       				$echo = eshopw_listpages($epages,$class);
       			}else{
       				$echo = eshopw_listpanels($epages,$class,$size);
       			}
       			return $echo;
       		}
       	}
       	return;
       }
       function eshopw_list_cat_tags($atts){
       	global $wpdb, $post,$wp_query;
       	extract(shortcode_atts(array('class'=>'eshopwcats','images'=>'no','sortby'=>'1','show'=>'6','order'=>'ASC','size'=>'','id'=>'','type'=>''), $atts));
       	$allowedsort=array('post_date','post_title','menu_order');
       	$allowedorder=array('ASC','DESC');
       	if(!in_array($sortby,$allowedsort))
       		$sortby='post_title';
       	switch ($sortby){
       		case '2'://menu order
       			$orderby='menu_order';
       			$order= 'ASC';
       			break;
       		case '3'://date asc
       			$orderby='post_date';
       			$order= 'ASC';
       			break;
       		case '4'://date desc
       			$orderby='post_date';
       			$order= 'DESC';
       			break;
       		case '1'://title
       		default:
       			$orderby='post_title';
       			$order= 'ASC';
       			break;
       	}
       	if(!in_array($order,$allowedorder))
       		$order='ASC';
       	$array=array('post','page');
       	$array=apply_filters('eshop_post_types',$array);
       	$args = array(
       	'post_type' => $array,
       	'post_status' => null,
       	$type => $id,
       	'meta_key'=>'_eshop_product',
       	'orderby'=> $orderby,
       	'posts_per_page' => $show
       	);
       	$pages = query_posts($args);
       	wp_reset_query();
       	if($pages) {
       		if($images=='no'){
       			$echo = eshopw_listpages($pages,$class);
       		}else{
       			if($class=='eshopsubpages') $class='eshopwpanels';
       			$echo = eshopw_listpanels($pages,$class,$size);
       		}
       		return $echo;
       	}
       	return;
       }
       function eshopw_listpages($subpages,$eshopclass){
       	global $wpdb, $post,$eshopoptions;
       	$paged=$post;
       	$echo='';
       	$echo .='<ul class="'.$eshopclass.'">';
       	foreach ($subpages as $post) {
       		setup_postdata($post);
       		$xclass='<li>';
       		if(isset($eshopoptions['sale']) && $eshopoptions['sale']=='yes'){
       			$esale=get_post_meta( $post->ID, '_eshop_sale',true );
       			if($esale=='yes')
       				$xclass='<li class="sale"><strong class="onsale"><span>'.__('On Sale','eshop').'</span></strong>';
       		}
       		$echo .= $xclass;
       		$echo .= '<a class="itemref" href="'.get_permalink($post->ID).'">'.apply_filters("the_title",$post->post_title, $post->ID).'</a></li>';
       	}
       	$echo .= '</ul>';
       	$post=$paged;
       	return $echo;
       }
   
       function eshopw_listpanels($subpages,$eshopclass,$size){
       	global $wpdb, $post,$eshopoptions;
       	$paged=$post;
       	$post='';
       	$echo='';
       	$echo .='<ul class="'.$eshopclass.'">';
       	foreach ($subpages as $post) {
       		setup_postdata($post);
       		$xclass='<li>';
       		if(isset($eshopoptions['sale']) && $eshopoptions['sale']=='yes'){
       			$esale=get_post_meta( $post->ID, '_eshop_sale',true );
       			if($esale=='yes')
       				$xclass='<li class="sale"><strong class="onsale"><span>'.__('On Sale','eshop').'</span></strong>';
       		}
       		$echo .= $xclass;
       		$w=apply_filters('eshop_thumbnail_size_w',get_option('thumbnail_size_w'));
       		$h=apply_filters('eshop_thumbnail_size_h',get_option('thumbnail_size_h'));
       		if($size!=''){
       			$w=round(($w*$size)/100);
       			$h=round(($h*$size)/100);
       		}
       		if (has_post_thumbnail( $post->ID ) ) {
       			$echo .='<a class="itemref" href="'.get_permalink($post->ID).'">'.get_the_post_thumbnail( $post->ID, array($w, $h)).'</a></li>'."\n";
       		}else{
       			$eimage=eshop_files_directory();
       			$eshopnoimage=apply_filters('eshop_no_image',$eimage['1'].'noimage.png');
       			$echo .='<a class="itemref" href="'.get_permalink($post->ID).'"><img src="'.$eshopnoimage.'" height="'.$h.'" width="'.$w.'" alt="" /></a></li>'."\n";
       		}
       	}
       	$echo .= '</ul>';
       	$post=$paged;
       	return $echo;
       }
       /* product serach widget */
   
       class eshop_search_widget extends WP_Widget {
   
       	function eshop_search_widget() {
       		$widget_ops = array('classname' => 'eshop-widget eshop_search_widget', 'description' => __('Displays a product search, optional link to an index page, and a random wiki page link','eshop'));
       		$this->WP_Widget('eshop_search_widget', __('eShop Product Search','eshop'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
       		$output='';
       		$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
       		$random = $instance['random'];
       		$search = $instance['search'];
       		$find = $instance['find'];
       		if($search=='1'){
       			$sq=' ';
       			if(get_search_query()!='')
       				$sq=get_search_query();
       			$output.='
       			    <form id="eshopsearchform" method="get" action="'.get_bloginfo('url').'">
       				<div>
       					<input type="text" name="s" id="eshopws" size="20" value="'.$sq.'" />
       					<input type="submit" value="'.__('Find','eshop').'" />
       					<input type="hidden" name="eshopsearch" value="'.$find.'" />
       				</div>
       				</form>';
   
       		}
       		if($random!=''){
       			$output.='<ul>';
       			$eswr=add_query_arg('eshoprandom','',get_bloginfo('url'));
       			$output.='<li><a href="'.$eswr.'">'.__('Random product','eshop').'</a></li>';
       			$output.='</ul>';
       		}
   
       		echo $before_widget;
       		echo $before_title.$title.$after_title;
       		echo $output;
       		echo $after_widget;
       	}
   
       	function update( $new_instance, $old_instance ) {
       		$instance = $old_instance;
       		$instance['title'] = strip_tags($new_instance['title']);
       		$instance['random'] = strip_tags( $new_instance['random'] );
       		$instance['search'] = strip_tags( $new_instance['search'] );
       		$instance['find'] = strip_tags( $new_instance['find'] );
       		return $instance;
       	}
   
       	function form( $instance ) {
       		$instance = wp_parse_args( (array) $instance, array( 'title' => '','random'=>'' , 'search'=>'', 'find' => '') );
       		$title = strip_tags($instance['title']);
       		$random = $instance['random'];
       		$search = $instance['search'];
       		$find = $instance['find'];
   
       		?>
       		 <p>
       		    <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
       		    <input type="text" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr($title);?>" />
       		 </p>
       		 <p>
       		  	<label for="<?php echo $this->get_field_id('search'); ?>"><?php _e('Show search form','eshop'); ?></label>
       		  	<select id="<?php echo $this->get_field_id('search'); ?>" name="<?php echo $this->get_field_name('search'); ?>">
       		  	<option value="1"<?php selected( $search, '1' ); ?>><?php _e('Yes','eshop'); ?></option>
       		  	<option value=""<?php selected( $search, '' ); ?>><?php _e('No','eshop'); ?></option>
       			</select><br />
   
       			<label for="<?php echo $this->get_field_id('find'); ?>"><?php _e('Find','eshop'); ?></label>
       			<select id="<?php echo $this->get_field_id('find'); ?>" name="<?php echo $this->get_field_name('find'); ?>">
       			<option value="all"<?php selected( $find, 'all' ); ?>><?php _e('All Products','eshop'); ?></option>
       			<option value="instock"<?php selected( $find, 'instock' ); ?>><?php _e('Only Products in Stock','eshop'); ?></option>
       			</select><br />
   
       			<label for="<?php echo $this->get_field_id('random'); ?>"><?php _e('Show random product link','eshop'); ?></label>
       			<select id="<?php echo $this->get_field_id('random'); ?>" name="<?php echo $this->get_field_name('random'); ?>">
       			<option value="1"<?php selected( $random, '1' ); ?>><?php _e('Yes','eshop'); ?></option>
       			<option value=""<?php selected( $random, '' ); ?>><?php _e('No','eshop'); ?></option>
       			</select>
       		</p>
       	<?php
       	}
       }
       ?>
       ```
   
 * [https://wordpress.org/plugins/eshop/](https://wordpress.org/plugins/eshop/)

Viewing 3 replies - 1 through 3 (of 3 total)

 *  Thread Starter [Вячеслав](https://wordpress.org/support/users/slavyan/)
 * (@slavyan)
 * [11 years, 10 months ago](https://wordpress.org/support/topic/eshop-widgetphp/#post-5187061)
 * it is necessary to comment out a code?
 *     ```
       /*
       if (get_the_ID() == $eshopoptions['cart'] || get_the_ID() == $eshopoptions['checkout'])
       			$eshopsw=apply_filters('eshopshowcartoncart',false); */
       ```
   
 *  Thread Starter [Вячеслав](https://wordpress.org/support/users/slavyan/)
 * (@slavyan)
 * [11 years, 9 months ago](https://wordpress.org/support/topic/eshop-widgetphp/#post-5187277)
 * Please help to adjust eshop_cart_widget.
 * Site page: shopping-cart.
 * [http://f-picture.net/lfp/i055.radikal.ru/1408/99/b882ae3b8ef9.png/htm](http://f-picture.net/lfp/i055.radikal.ru/1408/99/b882ae3b8ef9.png/htm)
 * I stopped on it
 *     ```
       if(isset($_SESSION['final_price'.$blog_id])) $thetotal=$_SESSION['final_price'.$blog_id];
       $eshoptotal=sprintf( __('%2$s %1$s','eshop'), $currsymbol, number_format_i18n($thetotal,__('2','eshop')));
       ```
   
 * help me
 *  Thread Starter [Вячеслав](https://wordpress.org/support/users/slavyan/)
 * (@slavyan)
 * [11 years, 9 months ago](https://wordpress.org/support/topic/eshop-widgetphp/#post-5187294)
 * I stopped on this code eshop/cart-functions.php
 *     ```
       if (!function_exists('calculate_price')) {
       	function calculate_price(){
       		global $blog_id;
       		if(isset($_SESSION['eshopcart'.$blog_id])){
       			$thecart=$_SESSION['eshopcart'.$blog_id];
       			// sum total price for all items in shopping shopcart
       			$price = 0.0;
   
       			if(is_array($thecart)){
       				foreach ($thecart as $productid => $opt){
       					$price=$price+$opt['price'];
       				}
       			}
       			return number_format($price, 2);
       		}
       		return '0';
       	}
       }
   
       $_SESSION['final_price'.$blog_id] = calculate_price();
       ```
   

Viewing 3 replies - 1 through 3 (of 3 total)

The topic ‘eshop-widget.php’ is closed to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/eshop_d6e4b8.svg)
 * [eShop](https://wordpress.org/plugins/eshop/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/eshop/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/eshop/)
 * [Active Topics](https://wordpress.org/support/plugin/eshop/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/eshop/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/eshop/reviews/)

 * 3 replies
 * 1 participant
 * Last reply from: [Вячеслав](https://wordpress.org/support/users/slavyan/)
 * Last activity: [11 years, 9 months ago](https://wordpress.org/support/topic/eshop-widgetphp/#post-5187294)
 * Status: resolved