Exemple #1
0
 /**
  * Render shortcode preview in a blank page
  * @return Ambigous <string, mixed>|WP_Error
  */
 function shortcode_iframe_preview()
 {
     global $wr_megamenu_element;
     if (isset($_GET['wr_shortcode_preview'])) {
         if (!isset($_GET['wr_shortcode_name']) || !isset($_POST['params'])) {
             return __('empty shortcode name / parameters', WR_MEGAMENU_TEXTDOMAIN);
         }
         if (!isset($_GET[WR_MEGAMENU_NONCE]) || !wp_verify_nonce($_GET[WR_MEGAMENU_NONCE], WR_MEGAMENU_NONCE)) {
             return;
         }
         $shortcode = esc_sql($_GET['wr_shortcode_name']);
         $params = urldecode($_POST['params']);
         $pattern = '/^\\[wr_megamenu_widget/i';
         if (!preg_match($pattern, trim($params))) {
             // get shortcode class
             $class = WR_Megamenu_Helpers_Shortcode::get_shortcode_class($shortcode);
             // get option settings of shortcode
             $elements = $wr_megamenu_element->get_elements();
             $element = isset($elements['element'][strtolower($class)]) ? $elements['element'][strtolower($class)] : null;
             if (!is_object($element)) {
                 $element = new $class();
             }
             if ($_POST['params']) {
                 $extract_params = WR_Megamenu_Helpers_Shortcode::extract_params($params, $shortcode);
             } else {
                 $extract_params = $element->config;
             }
             $element->shortcode_data();
             $_shortcode_content = $extract_params['_shortcode_content'];
             // Keep non-WR shortcode as they are in preview iframe
             $_shortcode_content = str_replace('[', '&#91;', $_shortcode_content);
             $_shortcode_content = str_replace('&#91;wr_', '[wr_', $_shortcode_content);
             $_shortcode_content = str_replace('&#91;/wr_', '[/wr_', $_shortcode_content);
             $content = $element->element_shortcode($extract_params, $_shortcode_content);
         } else {
             $class = 'WR_Megamenu_Widget';
             $content = '<script type="text/javascript">jQuery.noConflict();</script>';
             $content .= WR_Megamenu_Helpers_Shortcode::widget_content(array($params));
         }
         global $Wr_Megamenu_Preview_Class;
         $Wr_Megamenu_Preview_Class = $class;
         $html = '<div id="shortcode_inner_wrapper" class="jsn-bootstrap3">';
         $html .= $content;
         $html .= '</div>';
         echo balanceTags($html);
     }
 }