/** * Get preview data form woocommerce product in admin area * * @since 1.7.4 */ public function wc_slider_preview() { header("Content-Type: application/json"); // verify nonce if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], "msp_panel")) { echo json_encode(array('success' => false, 'message' => __("Authorization failed!", MSWP_TEXT_DOMAIN))); exit; } if (!msp_is_plugin_active('woocommerce/woocommerce.php')) { echo json_encode(array('success' => false, 'message' => __("Please install and activate WooCommerce plugin.", MSWP_TEXT_DOMAIN))); } $wcs = msp_get_wc_slider_class(); $posts_result = $wcs->parse_and_get_posts_result(); $template_tags = $wcs->get_first_post_template_tags_value(); if (empty($posts_result)) { $template_tags = null; } echo json_encode(array('success' => true, 'type' => 'preview', 'message' => '', 'preview_results' => $posts_result, 'template_tags' => $template_tags)); exit; // IMPORTANT }
public function get_wc_slider_ms_slides_shortcode() { if (!isset($this->parsed_slider_data['slides'])) { return ''; } $slides = $this->parsed_slider_data['slides']; $query = array(); $query['image_from'] = $this->parsed_slider_data['setting']['ps_image_from']; $query['excerpt_length'] = $this->parsed_slider_data['setting']['ps_excerpt_len']; $exclude_posts_no_img = $this->parsed_slider_data['setting']['ps_exclude_no_img']; $query['only_featured'] = $this->parsed_slider_data['setting']['wc_only_featured']; $query['only_instock'] = $this->parsed_slider_data['setting']['wc_only_instock']; $query['only_onsale'] = $this->parsed_slider_data['setting']['wc_only_onsale']; if (!empty($this->parsed_slider_data['setting']['ps_post_type'])) { $query['post_type'] = $this->parsed_slider_data['setting']['ps_post_type']; } $query['orderby'] = $this->parsed_slider_data['setting']['ps_orderby']; $query['order'] = $this->parsed_slider_data['setting']['ps_order']; $query['posts_per_page'] = $this->parsed_slider_data['setting']['ps_post_count']; if (!empty($this->parsed_slider_data['setting']['ps_posts_not_in'])) { $posts_not_in = explode(',', $this->parsed_slider_data['setting']['ps_posts_not_in']); $query['post__not_in'] = array_filter($posts_not_in); } if (!empty($this->parsed_slider_data['setting']['ps_posts_in'])) { $posts_in = explode(',', $this->parsed_slider_data['setting']['ps_posts_in']); $query['post__in'] = array_filter($posts_in); } $query['offset'] = $this->parsed_slider_data['setting']['ps_offset']; $taxs_data = array(); if (!empty($this->parsed_slider_data['setting']['ps_tax_term_ids'])) { $taxs_data = explode(',', $this->parsed_slider_data['setting']['ps_tax_term_ids']); } $tax_query = array(); $wcs = msp_get_wc_slider_class(); $query['tax_query'] = $wcs->get_tax_query($taxs_data); $query['image_size'] = 'full'; $query = apply_filters('msp_wc_slider_query_args', $query, $this->parsed_slider_data); $this->post_slider_args = $query; $slides_shortcode = ''; $th_wp_query = $wcs->get_query_results($query); if ($th_wp_query->have_posts()) { while ($th_wp_query->have_posts()) { $th_wp_query->the_post(); $product = get_product($th_wp_query->post); $slide_content = ''; $attrs = ''; $this->post_id = $th_wp_query->post->ID; if (empty($this->parsed_slider_data['setting']['ps_slide_bg'])) { $the_media = msp_get_auto_post_thumbnail_url($th_wp_query->post, $query['image_from']); } else { $the_media = $this->parsed_slider_data['setting']['ps_slide_bg']; } // skip this post if it does not have image and $exclude_posts_no_img is enabled if (empty($the_media) && 'true' == $exclude_posts_no_img) { continue; } $attrs .= sprintf('%s="%s" ', 'src', esc_attr($the_media)); // generate slide_info shortcode if slideinfo control is added if (isset($this->parsed_slider_data['setting']['slideinfo']) && 'true' == $this->parsed_slider_data['setting']['slideinfo']) { if (!empty($slides['0']['info'])) { $slide_info = preg_replace_callback('/{{[\\w-]+}}/', array($this, 'do_template_tag'), $slides['0']['info']); } else { $slide_info = " "; } $slide_content .= $this->get_ms_slide_info_shortcode($slide_info); } if ($this->parsed_slider_data['setting']['ps_link_slide']) { $attrs .= sprintf('%s="%s" ', 'link', get_the_permalink($th_wp_query->post->ID)); } $attrs .= sprintf('%s="%s" ', 'title', $this->escape_square_brackets(get_the_title($th_wp_query->post->ID))); $attrs .= sprintf('%s="%s" ', 'alt', $this->escape_square_brackets(get_the_title($th_wp_query->post->ID))); $attrs .= sprintf('%s="%s" ', 'target', $this->parsed_slider_data['setting']['ps_link_target']); $attrs .= sprintf('%s="%s" ', 'delay', $slides['0']['delay']); // bg color and align for slides $attrs .= sprintf('%s="%s" ', 'bgalign', $slides['0']['bgalign']); $attrs .= sprintf('%s="%s" ', 'bgcolor', $slides['0']['bgcolor']); if ('true' == $this->parsed_slider_data['setting']['thumbs']) { if ('thumbs' == $this->parsed_slider_data['setting']['thumbs_type']) { if (!empty($the_media)) { // set custom thumb size if slider template is gallery if ('image-gallery' == $this->parsed_slider_data['setting']['template']) { $thumb = msp_get_the_resized_image_src($the_media, 175, 140, true); } else { $thumb = msp_get_the_resized_image_src($the_media, $this->parsed_slider_data['setting']['thumbs_width'], $this->parsed_slider_data['setting']['thumbs_height'], true); } $thumb = msp_get_the_relative_media_url($thumb); $attrs .= sprintf('%s="%s" ', 'thumb', $thumb); } else { $tab = '<div class="ms-thumb-alt">' . get_the_title($th_wp_query->post->ID) . '</div>'; $attrs .= sprintf('%s="%s" ', 'tab', $tab); } } elseif ('tabs' == $this->parsed_slider_data['setting']['thumbs_type']) { // if "insert thumb" option was enabled generate and add the thumbnail if ('true' == $this->parsed_slider_data['setting']['thumbs_in_tab']) { $thumb_height = $this->parsed_slider_data['setting']['thumbs_height']; $tab_thumb = msp_get_auto_post_thumbnail_url($th_wp_query->post, 'featured', array($thumb_height, $thumb_height), true); $attrs .= sprintf('%s="%s" ', 'tab_thumb', $tab_thumb); } if (!empty($slides['0']['info'])) { $tab_context = preg_replace_callback('/{{[\\w-]+}}/', array($this, 'do_template_tag'), $slides['0']['info']); } else { $tab_context = get_the_title($th_wp_query->post->ID); } $attrs .= sprintf('%s="%s" ', 'tab', $this->escape_special($tab_context)); } } $slide_content .= $this->get_ms_layers_shortcode($slides['0']['layers']); $slides_shortcode .= sprintf('[%1$s %2$s]%4$s%3$s[/%1$s]%4$s', 'ms_slide', $attrs, $slide_content, "\n"); } } // Restore original Post Data wp_reset_postdata(); return $slides_shortcode; }
/** * Print required variable for master slider panel */ public function add_panel_variables() { wp_localize_script('jquery', '__MSP_SKINS', msp_get_skins()); global $mspdb; $slider_alias = ''; // get and print slider id if (isset($_REQUEST['slider_id'])) { $slider_id = $_REQUEST['slider_id']; } else { $slider_id = 0; if (isset($_REQUEST['action']) && 'add' == $_REQUEST['action']) { $slider_id = $mspdb->add_slider(array('status' => 'draft')); wp_localize_script('jquery', '__MSP_SLIDER_ID', (string) $slider_id); $slider_alias = $mspdb->generate_slider_alias($slider_id); wp_localize_script('jquery', '__MSP_SLIDER_ALIAS', $slider_alias); } } // Get and print panel data if ($slider_id) { $slider_data = $mspdb->get_slider($slider_id); $slider_type = isset($slider_data['type']) ? $slider_data['type'] : 'custom'; $slider_type = empty($slider_type) ? 'custom' : $slider_type; $msp_data = isset($slider_data['params']) ? $slider_data['params'] : NULL; $msp_data = empty($slider_data['params']) ? NULL : $slider_data['params']; $msp_preset_style = msp_get_option('preset_style', NULL); $msp_preset_effect = msp_get_option('preset_effect', NULL); $msp_buttons_style = msp_get_option('buttons_style', NULL); $msp_preset_style = empty($msp_preset_style) ? NULL : $msp_preset_style; $msp_preset_effect = empty($msp_preset_effect) ? NULL : $msp_preset_effect; $msp_buttons_style = empty($msp_buttons_style) ? NULL : $msp_buttons_style; if (empty($slider_alias)) { $slider_alias = isset($slider_data['alias']) && !empty($slider_data['alias']) ? $slider_data['alias'] : $mspdb->generate_slider_alias($slider_id); wp_localize_script('jquery', '__MSP_SLIDER_ALIAS', $slider_alias); } wp_localize_script('jquery', '__MSP_DATA', $msp_data); wp_localize_script('jquery', '__MSP_PRESET_STYLE', $msp_preset_style); wp_localize_script('jquery', '__MSP_PRESET_EFFECT', $msp_preset_effect); wp_localize_script('jquery', '__MSP_TYPE', $slider_type); wp_localize_script('jquery', '__MSP_PRESET_BUTTON', $msp_buttons_style); } // print essential variables (types, taxs, terms, template tags) for post slider in admin panel // since version 1.7 if (isset($slider_type) && 'post' == $slider_type) { $defined_tags = msp_get_general_post_template_tags(); $tags = array(); foreach ($defined_tags as $defined_tag) { $tag_type = '_general' == $defined_tag['type'] ? 'general' : $defined_tag['type']; $tags[$tag_type][] = array('name' => $defined_tag['name'], 'label' => $defined_tag['label']); } // -- get post types, taxes and terms -- $PS = msp_get_post_slider_class(); $terms = $PS->get_tax_term_dictionary(); // ------------------------------------- // $js_data = array('types_taxs_terms' => $terms, 'content_tags' => $tags); wp_localize_script('jquery', '__MSP_POST', apply_filters('masterslider_post_slider_init_data', $js_data)); } // print essential variables (types, taxs, terms, template tags) for woocommerce sliders in admin panel // since version 1.8 if (isset($slider_type) && 'wc-product' == $slider_type) { // if woocommerce is installed and actived if (msp_is_plugin_active('woocommerce/woocommerce.php')) { // -- template tags -------------------- $defined_tags = msp_get_general_post_template_tags(); $woocomm_tags = msp_get_woocommerce_template_tags(); $defined_tags = array_merge($defined_tags, $woocomm_tags); $tags = array(); foreach ($defined_tags as $defined_tag) { $tag_type = '_general' == $defined_tag['type'] ? 'general' : $defined_tag['type']; $tags[$tag_type][] = array('name' => $defined_tag['name'], 'label' => $defined_tag['label']); } // -- get post types, taxes and terms -- $WCS = msp_get_wc_slider_class(); $terms = $WCS->get_tax_term_dictionary(); // ------------------------------------- $js_data = array('types_taxs_terms' => $terms, 'content_tags' => $tags); // if woocommerce is not activated } else { $js_data = null; $wc_installation_url = admin_url('plugin-install.php?tab=plugin-information&plugin=woocommerce&TB_iframe=true&width=600&height=550'); wp_localize_script('jquery', '__WC_INSTALL_URL', $wc_installation_url); } wp_localize_script('jquery', '__MSP_POST', apply_filters('masterslider_wc_product_slider_init_data', $js_data)); } // define panel directory path wp_localize_script('jquery', '__MSP_PATH', MSWP_AVERTA_ADMIN_URL . '/views/slider-panel/'); $slider_panel_default_setting = array('width' => 1000, 'height' => 500, 'autoCrop' => false, 'autoplay' => false, 'layout' => 'boxed', 'autoHeight' => false, 'transition' => 'basic', 'speed' => 20, 'className' => '', 'start' => 1, 'space' => 0, 'grabCursor' => true, 'swipe' => true, 'wheel' => false, 'mouse' => true, 'loop' => false, 'shuffle' => false, 'preload' => '-1', 'overPause' => true, 'endPause' => false, 'hideLayers' => false, 'dir' => 'h', 'parallaxMode' => 'swipe', 'centerControls' => true, 'instantShowLayers' => false, 'skin' => 'ms-skin-default', 'duration' => 3, 'slideFillMode' => 'fill', 'sliderVideoFillMode' => 'fill', 'slideVideoLoop' => true, 'slideVideoMute' => true, 'slideVideoAutopause' => false, 'layerContent' => 'Lorem Ipsum'); wp_localize_script('jquery', '__MSP_DEF_OPTIONS', apply_filters('masterslider_panel_default_setting', $slider_panel_default_setting)); do_action('masterslider_admin_add_panel_variables', $slider_type); }