Event Calendar WD – Responsive Event Calendar plugin - Version 1.1.1

Version Description

  • Changed: Add "ecwd_hide_old_events"=1 as a custom meta field to calendar in order to hide past events and months
  • Fixed: PHP notice in events category page when there is no event
  • Fixed: JS error when trying to save event with no date
  • Fixed: DB changes on silent activation
  • Improved: Compatibility of templates for single event and event taxonomy with WooCommerce-compatible themes
Download this release

Release Info

Developer webdorado
Plugin Icon 128x128 Event Calendar WD – Responsive Event Calendar plugin
Version 1.1.1
Comparing to
See all releases

Code changes from version 1.1.0 to 1.1.1

ecwd.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Event Calendar WD
4
  * Plugin URI: https://web-dorado.com/products/wordpress-event-calendar-wd.html
5
  * Description: Event Calendar WD is an easy event management and planning tool with advanced features.
6
- * Version: 1.1.0
7
  * Author: WebDorado
8
  * Author URI: https://web-dorado.com
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
@@ -24,7 +24,7 @@ if (!defined('ECWD_URL')) {
24
  }
25
 
26
  if (!defined('ECWD_VERSION')) {
27
- define('ECWD_VERSION', "1.1.0");
28
  }
29
 
30
  if (!defined('ECWD_PLUGIN_MAIN_FILE')) {
@@ -39,7 +39,10 @@ add_action('plugins_loaded', array('ECWD', 'get_instance'));
39
 
40
  if (is_admin()) {
41
  require_once('ecwd_admin_class.php');
42
- register_activation_hook(__FILE__, array('ECWD_Admin', 'activate'));
 
 
 
43
  register_uninstall_hook(__FILE__, array('ECWD_Admin', 'uninstall'));
44
  add_action('plugins_loaded', array('ECWD_Admin', 'get_instance'));
45
  add_action('plugins_loaded', array('ECWD_Admin', 'ecwd_freemius'));
3
  * Plugin Name: Event Calendar WD
4
  * Plugin URI: https://web-dorado.com/products/wordpress-event-calendar-wd.html
5
  * Description: Event Calendar WD is an easy event management and planning tool with advanced features.
6
+ * Version: 1.1.1
7
  * Author: WebDorado
8
  * Author URI: https://web-dorado.com
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
24
  }
25
 
26
  if (!defined('ECWD_VERSION')) {
27
+ define('ECWD_VERSION', "1.1.1");
28
  }
29
 
30
  if (!defined('ECWD_PLUGIN_MAIN_FILE')) {
39
 
40
  if (is_admin()) {
41
  require_once('ecwd_admin_class.php');
42
+
43
+ add_action('init', array( 'ECWD_Admin', 'check_silent_update' ));
44
+
45
+ register_activation_hook(__FILE__, array('ECWD_Admin', 'global_activate'));
46
  register_uninstall_hook(__FILE__, array('ECWD_Admin', 'uninstall'));
47
  add_action('plugins_loaded', array('ECWD_Admin', 'get_instance'));
48
  add_action('plugins_loaded', array('ECWD_Admin', 'ecwd_freemius'));
ecwd_admin_class.php CHANGED
@@ -6,7 +6,6 @@
6
  class ECWD_Admin {
7
 
8
  protected static $instance = null;
9
- protected $version = '1.1.0';
10
  protected $ecwd_page = null;
11
  protected $notices = null;
12
  protected static $default_shortcode = '[ecwd id="%s" type="full" page_items="5" event_search="yes" display="full" displays="full,list,week,day" filters=""]';
@@ -14,7 +13,6 @@ class ECWD_Admin {
14
  private function __construct() {
15
  $plugin = ECWD::get_instance();
16
  $this->prefix = $plugin->get_prefix();
17
- $this->version = $plugin->get_version();
18
  $this->notices = new ECWD_Notices();
19
  add_filter('plugin_action_links_' . plugin_basename(plugin_dir_path(__FILE__) . $this->prefix . '.php'), array(
20
  $this,
@@ -52,10 +50,22 @@ class ECWD_Admin {
52
  add_action('admin_notices', array($this, 'ecwd_admin_notices'));
53
  add_action('admin_notices', array($this, 'ecwd_helper_bar'), 10000);
54
  add_filter('parent_file', array($this, 'ecwd_submenu_parent_file'));
 
55
  }
56
 
 
 
 
 
57
 
58
- function ecwd_submenu_parent_file($parent_file) {
 
 
 
 
 
 
 
59
  $screen = get_current_screen();
60
  if ($screen->post_type == "ecwd_organizer" || $screen->post_type == "ecwd_venue") {
61
  return ECWD_MENU_SLUG;
@@ -90,7 +100,10 @@ class ECWD_Admin {
90
  }
91
  }
92
 
93
- public static function activate() {
 
 
 
94
  if (!defined('ECWD_PLUGIN_PREFIX')) {
95
  define('ECWD_PLUGIN_PREFIX', 'ecwd');
96
  }
@@ -139,9 +152,11 @@ class ECWD_Admin {
139
 
140
  if($version_option == false){
141
  self::fix_events_locations();
 
 
142
  }
143
 
144
- if($version_option == false || version_compare($version_option, '1.0.83', '<=')) {
145
  $opt = get_option('ecwd_settings_general');
146
  if (isset($opt['show_events_detail'])) {
147
  $events_opt = get_option('ecwd_settings_events');
@@ -150,21 +165,52 @@ class ECWD_Admin {
150
  }
151
  }
152
 
153
- $version_for_compare = ($version_option !== false && substr($version_option, 0, 1) == '5') ? '5.0.94' : '1.0.94';
154
- if ($version_option == false || version_compare($version_option, $version_for_compare, '<=')) {
155
  self::update_to_95($calendars);
156
  }
157
 
158
- if($version_option === false){
159
- update_option('ecwd_do_activation_redirect', '2');
160
- }else{
161
- update_option('ecwd_do_activation_redirect', '1');
162
- }
163
 
164
  update_option('ecwd_version',ECWD_VERSION);
165
 
166
  }
167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  private static function update_to_95($calendars) {
169
  //add shortcodes on calendar content
170
  if(!empty($calendars)) {
@@ -520,7 +566,7 @@ class ECWD_Admin {
520
  */
521
  public function enqueue_admin_styles() {
522
 
523
- $styles_key = $this->version . '_' . ECWD_SCRIPTS_KEY;
524
  wp_enqueue_style($this->prefix . '-calendar-buttons-style', plugins_url('css/admin/mse-buttons.css', __FILE__), '', $styles_key, 'all');
525
  if ($this->ecwd_page()) {
526
  //wp_enqueue_style($this->prefix . '-main', plugins_url('css/calendar.css', __FILE__), '', $styles_key);
@@ -538,7 +584,7 @@ class ECWD_Admin {
538
  * Register scripts for the admin area
539
  */
540
  public function enqueue_admin_scripts() {
541
- $scripts_key = $this->version . '_' . ECWD_SCRIPTS_KEY;
542
  if ($this->ecwd_page()) {
543
  global $ecwd_options;
544
 
6
  class ECWD_Admin {
7
 
8
  protected static $instance = null;
 
9
  protected $ecwd_page = null;
10
  protected $notices = null;
11
  protected static $default_shortcode = '[ecwd id="%s" type="full" page_items="5" event_search="yes" display="full" displays="full,list,week,day" filters=""]';
13
  private function __construct() {
14
  $plugin = ECWD::get_instance();
15
  $this->prefix = $plugin->get_prefix();
 
16
  $this->notices = new ECWD_Notices();
17
  add_filter('plugin_action_links_' . plugin_basename(plugin_dir_path(__FILE__) . $this->prefix . '.php'), array(
18
  $this,
50
  add_action('admin_notices', array($this, 'ecwd_admin_notices'));
51
  add_action('admin_notices', array($this, 'ecwd_helper_bar'), 10000);
52
  add_filter('parent_file', array($this, 'ecwd_submenu_parent_file'));
53
+ add_filter('default_hidden_meta_boxes', array($this, 'default_hidden_meta_boxes'),2,2);
54
  }
55
 
56
+ public function default_hidden_meta_boxes($hidden, $screen) {
57
+ if ($screen->id == 'ecwd_calendar') {
58
+ if (!in_array('postcustom',$hidden)) {
59
+ array_push($hidden, 'postcustom');
60
 
61
+ }
62
+ }
63
+ return $hidden;
64
+ }
65
+
66
+
67
+
68
+ function ecwd_submenu_parent_file($parent_file) {
69
  $screen = get_current_screen();
70
  if ($screen->post_type == "ecwd_organizer" || $screen->post_type == "ecwd_venue") {
71
  return ECWD_MENU_SLUG;
100
  }
101
  }
102
 
103
+
104
+
105
+
106
+ public static function activate() {
107
  if (!defined('ECWD_PLUGIN_PREFIX')) {
108
  define('ECWD_PLUGIN_PREFIX', 'ecwd');
109
  }
152
 
153
  if($version_option == false){
154
  self::fix_events_locations();
155
+ update_option('ecwd_do_activation_redirect', '2');
156
+
157
  }
158
 
159
+ if($version_option == false || version_compare(substr($version_option, 2), '0.83', '<=')) {
160
  $opt = get_option('ecwd_settings_general');
161
  if (isset($opt['show_events_detail'])) {
162
  $events_opt = get_option('ecwd_settings_events');
165
  }
166
  }
167
 
168
+ if ($version_option == false || version_compare(substr($version_option, 2), '0.94', '<=')) {
 
169
  self::update_to_95($calendars);
170
  }
171
 
172
+
173
+
 
 
 
174
 
175
  update_option('ecwd_version',ECWD_VERSION);
176
 
177
  }
178
 
179
+
180
+ public static function check_silent_update(){
181
+
182
+ $current_version = ECWD_VERSION;
183
+ $saved_version = get_option('ecwd_version');
184
+
185
+ $old_version = substr($saved_version, 2);
186
+ $new_version = substr($current_version, 2);
187
+
188
+ if($new_version != $old_version ){
189
+
190
+ self::activate();
191
+ }
192
+
193
+ }
194
+
195
+ public static function global_activate($networkwide)
196
+ {
197
+ if (function_exists('is_multisite') && is_multisite()) {
198
+ // Check if it is a network activation - if so, run the activation function for each blog id.
199
+ if ($networkwide) {
200
+ global $wpdb;
201
+ // Get all blog ids.
202
+ $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
203
+ foreach ($blogids as $blog_id) {
204
+ switch_to_blog($blog_id);
205
+ self::activate();
206
+ restore_current_blog();
207
+ }
208
+ return;
209
+ }
210
+ }
211
+ self::activate();
212
+ }
213
+
214
  private static function update_to_95($calendars) {
215
  //add shortcodes on calendar content
216
  if(!empty($calendars)) {
566
  */
567
  public function enqueue_admin_styles() {
568
 
569
+ $styles_key = ECWD_VERSION . '_' . ECWD_SCRIPTS_KEY;
570
  wp_enqueue_style($this->prefix . '-calendar-buttons-style', plugins_url('css/admin/mse-buttons.css', __FILE__), '', $styles_key, 'all');
571
  if ($this->ecwd_page()) {
572
  //wp_enqueue_style($this->prefix . '-main', plugins_url('css/calendar.css', __FILE__), '', $styles_key);
584
  * Register scripts for the admin area
585
  */
586
  public function enqueue_admin_scripts() {
587
+ $scripts_key = ECWD_VERSION . '_' . ECWD_SCRIPTS_KEY;
588
  if ($this->ecwd_page()) {
589
  global $ecwd_options;
590
 
ecwd_class.php CHANGED
@@ -6,7 +6,6 @@
6
  */
7
  class ECWD {
8
 
9
- protected $version = '1.1.0';
10
  protected $plugin_name = 'event-calendar-wd';
11
  protected $prefix = 'ecwd';
12
  protected static $instance = null;
@@ -71,10 +70,6 @@ class ECWD {
71
  define('ECWD_URL', plugins_url(plugin_basename(dirname(__FILE__))));
72
  }
73
 
74
- if (!defined('ECWD_VERSION')) {
75
- define('ECWD_VERSION', $this->version);
76
- }
77
-
78
  if (!defined('ECWD_SCRIPTS_KEY')) {
79
  define('ECWD_SCRIPTS_KEY', ECWD::scripts_key());
80
  }
@@ -152,19 +147,22 @@ class ECWD {
152
  global $wp_scripts, $post,$ecwd_options;
153
  $map_included = false;
154
 
155
- $scripts_key = $this->version . '_' . ECWD_SCRIPTS_KEY;
156
 
157
  $load_map = true;
158
- if($post->post_type == "ecwd_venue") {
159
- if(get_post_meta($post->ID, 'ecwd_venue_show_map', true) !== '1'){
160
- $load_map = false;
161
- }
162
- }else if($post->post_type == "ecwd_event"){
163
- if(get_post_meta($post->ID, 'ecwd_event_show_map',true) !== '1'){
164
- $load_map = false;
 
 
165
  }
166
  }
167
 
 
168
  $gmap_key = (isset($ecwd_options['gmap_key'])) ? trim($ecwd_options['gmap_key']) : "";
169
  if (is_object($post) && $load_map === true && !empty($gmap_key)) {
170
  if (isset($post->post_type) && ($post->post_type == 'ecwd_event' || $post->post_type == 'ecwd_venue' || strpos($post->post_content, 'ecwd id') !== false)) {
@@ -213,7 +211,7 @@ class ECWD {
213
 
214
  public function enqueue_styles() {
215
  global $ecwd_options;
216
- $styles_key = $this->version .'_' . ECWD_SCRIPTS_KEY;
217
  wp_enqueue_style($this->prefix . '-popup-style', plugins_url('/css/ecwd_popup.css', __FILE__), '', $styles_key, 'all');
218
  wp_enqueue_style($this->prefix . '_font-awesome', plugins_url('/css/font-awesome/font-awesome.css', __FILE__), '', $styles_key, 'all');
219
  wp_enqueue_style($this->prefix . '-public', plugins_url('css/style.css', __FILE__), '', $styles_key, 'all');
@@ -274,13 +272,6 @@ class ECWD {
274
  return $this->prefix;
275
  }
276
 
277
- /**
278
- * Return the plugin version.
279
- */
280
- public function get_version() {
281
- return $this->version;
282
- }
283
-
284
  public static function add_http($url){
285
  $url = trim($url);
286
  if (empty($url) === false && strpos($url,'http://') === false && strpos($url,'https://') === false){
6
  */
7
  class ECWD {
8
 
 
9
  protected $plugin_name = 'event-calendar-wd';
10
  protected $prefix = 'ecwd';
11
  protected static $instance = null;
70
  define('ECWD_URL', plugins_url(plugin_basename(dirname(__FILE__))));
71
  }
72
 
 
 
 
 
73
  if (!defined('ECWD_SCRIPTS_KEY')) {
74
  define('ECWD_SCRIPTS_KEY', ECWD::scripts_key());
75
  }
147
  global $wp_scripts, $post,$ecwd_options;
148
  $map_included = false;
149
 
150
+ $scripts_key = ECWD_VERSION . '_' . ECWD_SCRIPTS_KEY;
151
 
152
  $load_map = true;
153
+ if(isset($post)){
154
+ if($post->post_type == "ecwd_venue") {
155
+ if(get_post_meta($post->ID, 'ecwd_venue_show_map', true) !== '1'){
156
+ $load_map = false;
157
+ }
158
+ }else if($post->post_type == "ecwd_event"){
159
+ if(get_post_meta($post->ID, 'ecwd_event_show_map',true) !== '1'){
160
+ $load_map = false;
161
+ }
162
  }
163
  }
164
 
165
+
166
  $gmap_key = (isset($ecwd_options['gmap_key'])) ? trim($ecwd_options['gmap_key']) : "";
167
  if (is_object($post) && $load_map === true && !empty($gmap_key)) {
168
  if (isset($post->post_type) && ($post->post_type == 'ecwd_event' || $post->post_type == 'ecwd_venue' || strpos($post->post_content, 'ecwd id') !== false)) {
211
 
212
  public function enqueue_styles() {
213
  global $ecwd_options;
214
+ $styles_key = ECWD_VERSION . '_' . ECWD_SCRIPTS_KEY;
215
  wp_enqueue_style($this->prefix . '-popup-style', plugins_url('/css/ecwd_popup.css', __FILE__), '', $styles_key, 'all');
216
  wp_enqueue_style($this->prefix . '_font-awesome', plugins_url('/css/font-awesome/font-awesome.css', __FILE__), '', $styles_key, 'all');
217
  wp_enqueue_style($this->prefix . '-public', plugins_url('css/style.css', __FILE__), '', $styles_key, 'all');
272
  return $this->prefix;
273
  }
274
 
 
 
 
 
 
 
 
275
  public static function add_http($url){
276
  $url = trim($url);
277
  if (empty($url) === false && strpos($url,'http://') === false && strpos($url,'https://') === false){
includes/ecwd-cpt-class.php CHANGED
@@ -429,7 +429,8 @@ class ECWD_Cpt {
429
  'menu_icon' => plugins_url('/assets/Insert-icon.png', ECWD_MAIN_FILE),
430
  'supports' => array(
431
  'title',
432
- 'editor'
 
433
  )
434
  );
435
 
429
  'menu_icon' => plugins_url('/assets/Insert-icon.png', ECWD_MAIN_FILE),
430
  'supports' => array(
431
  'title',
432
+ 'editor',
433
+ 'custom-fields'
434
  )
435
  );
436
 
includes/ecwd-display-class.php CHANGED
@@ -231,7 +231,16 @@ class ECWD_Display {
231
  global $ecwd_options;
232
  $event_desc_length = isset($ecwd_options['event_description_max_length']) ? $ecwd_options['event_description_max_length'] : "";
233
 
234
- $hide_old_events = (isset($ecwd_options['hide_old_events']) && $ecwd_options['hide_old_events'] == '1');
 
 
 
 
 
 
 
 
 
235
  foreach ($ecwd_events as $ecwd_event) {
236
 
237
  $term_metas = array();
231
  global $ecwd_options;
232
  $event_desc_length = isset($ecwd_options['event_description_max_length']) ? $ecwd_options['event_description_max_length'] : "";
233
 
234
+ $hide_old_events_meta = get_post_meta($id, 'ecwd_hide_old_events', true);
235
+
236
+ if ($hide_old_events_meta === '0'){
237
+ $hide_old_events = false;
238
+ }else if($hide_old_events_meta === '1'){
239
+ $hide_old_events = true;
240
+ }else{
241
+ $hide_old_events = (isset($ecwd_options['hide_old_events']) && $ecwd_options['hide_old_events'] == '1');
242
+ }
243
+
244
  foreach ($ecwd_events as $ecwd_event) {
245
 
246
  $term_metas = array();
js/admin/admin.js CHANGED
@@ -102,14 +102,17 @@
102
  if (dateFrom == '' || isNaN(dateFrom) || isNaN(dateTo) || dateTo == '') {
103
  alert('Please set the event dates');
104
  e.preventDefault();
 
105
  }
106
  if (dateFrom && !dateTo) {
107
  alert('Please set the end date');
108
  e.preventDefault();
 
109
  }
110
  if (dateTo < dateFrom) {
111
  alert('Date to must be greater or equal to Date from');
112
  e.preventDefault();
 
113
  }
114
  if ($('input[name="ecwd_event_repeat_event"]').length > 0) {
115
  var repeat = $('input[name="ecwd_event_repeat_event"]:checked').val();
@@ -118,10 +121,12 @@
118
  if (until == '' || isNaN(until)) {
119
  alert('Please set the repeat until date');
120
  e.preventDefault();
 
121
  }
122
  if (!isNaN(dateFrom) && !isNaN(until) && until <= dateFrom) {
123
  alert('Repeat until date must be greater than Date from');
124
  e.preventDefault();
 
125
  }
126
  }
127
  }
102
  if (dateFrom == '' || isNaN(dateFrom) || isNaN(dateTo) || dateTo == '') {
103
  alert('Please set the event dates');
104
  e.preventDefault();
105
+ return false;
106
  }
107
  if (dateFrom && !dateTo) {
108
  alert('Please set the end date');
109
  e.preventDefault();
110
+ return false;
111
  }
112
  if (dateTo < dateFrom) {
113
  alert('Date to must be greater or equal to Date from');
114
  e.preventDefault();
115
+ return false;
116
  }
117
  if ($('input[name="ecwd_event_repeat_event"]').length > 0) {
118
  var repeat = $('input[name="ecwd_event_repeat_event"]:checked').val();
121
  if (until == '' || isNaN(until)) {
122
  alert('Please set the repeat until date');
123
  e.preventDefault();
124
+ return false;
125
  }
126
  if (!isNaN(dateFrom) && !isNaN(until) && until <= dateFrom) {
127
  alert('Repeat until date must be greater than Date from');
128
  e.preventDefault();
129
+ return false;
130
  }
131
  }
132
  }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://web-dorado.com/products/wordpress-event-calendar-wd.html
4
  Tags: calendar, date, event, event calendar, events, events calendar, meeting, organizer, recurring, reservation, responsive, schedule
5
  Requires at least: 3.9
6
  Tested up to: 4.8
7
- Stable tag: 1.1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -247,6 +247,13 @@ After downloading the ZIP file of the Event Calendar WD plugin,
247
 
248
  == Changelog ==
249
 
 
 
 
 
 
 
 
250
  = 1.1.0 =
251
  * Changed: Improved UI of venue editor in event page
252
  * Fixed: Displayed date and time for one day event
4
  Tags: calendar, date, event, event calendar, events, events calendar, meeting, organizer, recurring, reservation, responsive, schedule
5
  Requires at least: 3.9
6
  Tested up to: 4.8
7
+ Stable tag: 1.1.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
247
 
248
  == Changelog ==
249
 
250
+ = 1.1.1 =
251
+ * Changed: Add "ecwd_hide_old_events"=1 as a custom meta field to calendar in order to hide past events and months
252
+ * Fixed: PHP notice in events category page when there is no event
253
+ * Fixed: JS error when trying to save event with no date
254
+ * Fixed: DB changes on silent activation
255
+ * Improved: Compatibility of templates for single event and event taxonomy with WooCommerce-compatible themes
256
+
257
  = 1.1.0 =
258
  * Changed: Improved UI of venue editor in event page
259
  * Fixed: Displayed date and time for one day event
views/single-event.php CHANGED
@@ -170,6 +170,8 @@ if (!empty($calendars_id)) {
170
  }
171
 
172
  get_header();
 
 
173
  ?>
174
  <div id="ecwd-events-content" class="ecwd-events-single hentry site-content">
175
 
@@ -544,5 +546,7 @@ get_header();
544
  if (isset($ecwd_options['enable_sidebar_in_event']) && $ecwd_options['enable_sidebar_in_event'] == '1') {
545
  get_sidebar();
546
  }
 
 
547
  get_footer();
548
  ?>
170
  }
171
 
172
  get_header();
173
+
174
+ do_action( 'woocommerce_before_main_content' );
175
  ?>
176
  <div id="ecwd-events-content" class="ecwd-events-single hentry site-content">
177
 
546
  if (isset($ecwd_options['enable_sidebar_in_event']) && $ecwd_options['enable_sidebar_in_event'] == '1') {
547
  get_sidebar();
548
  }
549
+ do_action('woocommerce_after_main_content');
550
+
551
  get_footer();
552
  ?>
views/taxonomy-ecwd_event_category.php CHANGED
@@ -18,6 +18,8 @@ $events_template_part_name = (!empty($ecwd_options['category_archive_template_pa
18
 
19
 
20
  get_header();
 
 
21
  ?>
22
 
23
  <section id="primary" class="content-area">
@@ -42,5 +44,9 @@ get_header();
42
 
43
  </section><!-- #primary -->
44
 
45
- <?php get_sidebar(); ?>
46
- <?php get_footer(); ?>
 
 
 
 
18
 
19
 
20
  get_header();
21
+
22
+ do_action( 'woocommerce_before_main_content' );
23
  ?>
24
 
25
  <section id="primary" class="content-area">
44
 
45
  </section><!-- #primary -->
46
 
47
+ <?php
48
+ get_sidebar();
49
+
50
+ do_action('woocommerce_after_main_content');
51
+
52
+ get_footer(); ?>