コード例 #1
1
 public function __construct()
 {
     // make sure all vc shortcodes are loaded (needed for ajax pagination)
     if (method_exists('WPBMap', 'addAllMappedShortcodes')) {
         WPBMap::addAllMappedShortcodes();
     }
     add_action('the_content', array($this, 'render_custom_css'));
     // this adds the [Fields and Views] to editor of visual composers text element
     if (array_key_exists('action', $_POST) && $_POST['action'] == 'vc_edit_form') {
         add_filter('wpv_filter_dialog_for_editors_requires_post', '__return_false');
     }
 }
コード例 #2
0
 /**
  * Frozen row shortcode hook.
  *
  * @param $atts
  * @param string $content
  *
  * @return string
  */
 public function outputShortcode($atts, $content = '')
 {
     $id = $el_class = $output = '';
     extract(shortcode_atts(array('el_class' => '', 'id' => ''), $atts));
     if (empty($id)) {
         return $output;
     }
     $my_query = new WP_Query(array('post_type' => self::postType(), 'p' => (int) $id));
     WPBMap::addAllMappedShortcodes();
     while ($my_query->have_posts()) {
         $my_query->the_post();
         if (get_the_ID() === (int) $id) {
             $output .= '<div class="templatera_shortcode' . ($el_class ? ' ' . $el_class : '') . '">';
             ob_start();
             visual_composer()->addFrontCss();
             $content = get_the_content();
             echo $content;
             $output .= ob_get_clean();
             $output .= '</div>';
         }
     }
     wp_reset_query();
     wp_enqueue_style('templatera_inline', $this->assetUrl('css/front_style.css'), false, '2.1');
     return do_shortcode($output);
 }
コード例 #3
0
 /**
  * @param $content
  * @param bool $is_container
  * @param bool $parent_id
  *
  * @since 4.2
  * @return string
  */
 function parseShortcodesString($content, $is_container = false, $parent_id = false)
 {
     $string = '';
     preg_match_all('/' . self::shortcodesRegexp() . '/', trim($content), $found);
     WPBMap::addAllMappedShortcodes();
     add_shortcode('vc_container_anchor', 'vc_container_anchor');
     if (count($found[2]) === 0) {
         return $is_container && strlen($content) > 0 ? $this->parseShortcodesString('[vc_column_text]' . $content . '[/vc_column_text]', false, $parent_id) : $content;
     }
     foreach ($found[2] as $index => $s) {
         $id = md5(time() . '-' . $this->tag_index++);
         $content = $found[5][$index];
         $shortcode = array('tag' => $s, 'attrs_query' => $found[3][$index], 'attrs' => shortcode_parse_atts($found[3][$index]), 'id' => $id, 'parent_id' => $parent_id);
         if (false !== WPBMap::getParam($s, 'content')) {
             $shortcode['attrs']['content'] = $content;
         }
         $this->post_shortcodes[] = rawurlencode(json_encode($shortcode));
         $string .= $this->toString($shortcode, $content);
     }
     return $string;
 }
コード例 #4
0
ファイル: class-vc-grid-item.php プロジェクト: k2jysy/wedev
 /**
  * Generates html with template's variables for rendering new project.
  *
  * @param $template
  */
 public function parseTemplate($template)
 {
     $this->mapShortcodes();
     WPBMap::addAllMappedShortcodes();
     $attr = ' width="' . $this->gridAttribute('element_width', 12) . '"' . ' is_end="' . ('true' === $this->isEnd() ? 'true' : '') . '"';
     $template = preg_replace('/(\\[(\\[?)vc_gitem\\b)/', '$1' . $attr, $template);
     $this->html_template .= do_shortcode($template);
 }
コード例 #5
0
 /**
  * Render new template view as backened editor content.
  *
  * @since 4.8
  */
 public function renderTemplatePreview()
 {
     vc_user_access()->checkAdminNonce()->validateDie()->wpAny(array('edit_post', (int) vc_request_param('post_id')))->validateDie()->part('templates')->can()->validateDie();
     $template_id = vc_request_param('template_unique_id');
     $template_type = vc_request_param('template_type');
     global $current_user;
     wp_get_current_user();
     if (!isset($template_id, $template_type) || '' === $template_id || '' === $template_type) {
         die(__('Error: wrong template id.', 'js_composer'));
     }
     WPBMap::addAllMappedShortcodes();
     if ('my_templates' === $template_type) {
         $saved_templates = get_option($this->option_name);
         $content = trim($saved_templates[$template_id]['template']);
         $content = str_replace('\\"', '"', $content);
         $pattern = get_shortcode_regex();
         $content = preg_replace_callback("/{$pattern}/s", 'vc_convert_shortcode', $content);
     } else {
         if ('default_templates' === $template_type) {
             $content = $this->getBackendDefaultTemplate(true);
         } else {
             $content = apply_filters('vc_templates_render_backend_template_preview', $template_id, $template_type);
         }
     }
     vc_include_template(apply_filters('vc_render_template_preview_include_template', 'editors/vc_ui-template-preview.tpl.php'), array('content' => $content, 'editorPost' => get_post(vc_request_param('post_id')), 'current_user' => $current_user));
     die;
 }
コード例 #6
0
 /**
  * Parse shortcodes custom css string.
  *
  * This function is used by self::buildShortcodesCustomCss and creates css string from shortcodes attributes
  * like 'css_editor'.
  *
  * @see    WPBakeryVisualComposerCssEditor
  * @since  4.2
  * @access public
  *
  * @param $content
  *
  * @return string
  */
 public function parseShortcodesCustomCss($content)
 {
     $css = '';
     if (!preg_match('/\\s*(\\.[^\\{]+)\\s*\\{\\s*([^\\}]+)\\s*\\}\\s*/', $content)) {
         return $css;
     }
     WPBMap::addAllMappedShortcodes();
     preg_match_all('/' . get_shortcode_regex() . '/', $content, $shortcodes);
     foreach ($shortcodes[2] as $index => $tag) {
         $shortcode = WPBMap::getShortCode($tag);
         $attr_array = shortcode_parse_atts(trim($shortcodes[3][$index]));
         if (isset($shortcode['params']) && !empty($shortcode['params'])) {
             foreach ($shortcode['params'] as $param) {
                 if ('css_editor' === $param['type'] && isset($attr_array[$param['param_name']])) {
                     $css .= $attr_array[$param['param_name']];
                 }
             }
         }
     }
     foreach ($shortcodes[5] as $shortcode_content) {
         $css .= $this->parseShortcodesCustomCss($shortcode_content);
     }
     return $css;
 }
コード例 #7
0
 /**
  * Get template's shortcodes string
  *
  * @param $template_data
  * @return string|null
  */
 protected function getTemplate($template_data)
 {
     $template = null;
     $template_settings = preg_split('/\\:\\:/', $template_data);
     $template_id = $template_settings[1];
     $template_type = $template_settings[0];
     if (!isset($template_id, $template_type) || '' === $template_id || '' === $template_type) {
         return $template;
     }
     WPBMap::addAllMappedShortcodes();
     if ('my_templates' === $template_type) {
         $saved_templates = get_option($this->getTemplatesEditor()->getOptionName());
         $content = trim($saved_templates[$template_id]['template']);
         $content = str_replace('\\"', '"', $content);
         $pattern = get_shortcode_regex();
         $template = preg_replace_callback("/{$pattern}/s", 'vc_convert_shortcode', $content);
     } else {
         if ('default_templates' === $template_type) {
             $template_data = $this->getTemplatesEditor()->getDefaultTemplate($template_id);
             if (isset($template_data['content'])) {
                 $template = $template_data['content'];
             }
         } else {
             $template_preview = apply_filters('vc_templates_render_backend_template_preview', $template_id, $template_type);
             if ((string) $template_preview !== (string) $template_id) {
                 $template = $template_preview;
             }
         }
     }
     return $template;
 }