예제 #1
0
파일: core.php 프로젝트: WaitButWhy/www
 /**
  * Render shortcode preview in a blank page
  *
  * @return Ambigous <string, mixed>|WP_Error
  */
 function shortcode_iframe_preview()
 {
     if (isset($_GET['ig_shortcode_preview'])) {
         if (!isset($_GET['ig_shortcode_name']) || !isset($_POST['params'])) {
             return __('empty shortcode name / parameters', IGPBL);
         }
         if (!isset($_GET[IGNONCE]) || !wp_verify_nonce($_GET[IGNONCE], IGNONCE)) {
             return;
         }
         $shortcode = esc_sql($_GET['ig_shortcode_name']);
         $params = urldecode($_POST['params']);
         $pattern = '/^\\[ig_widget/i';
         if (!preg_match($pattern, trim($params))) {
             // get shortcode class
             $class = IG_Pb_Helper_Shortcode::get_shortcode_class($shortcode);
             // get option settings of shortcode
             $elements = $this->get_elements();
             $elements = $this->get_elements();
             $element = isset($elements['element'][strtolower($class)]) ? $elements['element'][strtolower($class)] : null;
             if (!is_object($element)) {
                 $element = new $class();
             }
             if ($params) {
                 $extract_params = IG_Pb_Helper_Shortcode::extract_params($params, $shortcode);
             } else {
                 $extract_params = $element->config;
             }
             $element->shortcode_data();
             $_shortcode_content = $extract_params['_shortcode_content'];
             $content = $element->element_shortcode($extract_params, $_shortcode_content);
         } else {
             $class = 'IG_Widget';
             $content = IG_Pb_Helper_Shortcode::widget_content(array($params));
         }
         global $Ig_Pb_Preview_Class;
         $Ig_Pb_Preview_Class = $class;
         $html = '<div id="shortcode_inner_wrapper" class="jsn-bootstrap3">';
         $html .= $content;
         $html .= '</div>';
         echo balanceTags($html);
     }
 }