/** * 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); } }