带有do_action短代码的Visual Composer Grid无法正常工作

时间:2016-03-17 13:47:11

标签: wordpress wordpress-plugin

我的视觉作曲家充满了主题。当我在编辑器中将以下网格短代码放入我的页面时,它可以正常工作。

[vc_basic_grid post_type =" post_type" MAX_ITEMS =" 10"项=" masonryGrid_SlideFromLeft" grid_id =" vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10"分类=" 555"]

但是,当我使用do_action调用完全相同的代码时,会出现以下javascript错误。我检查了html输出,使用do_action就像将短代码放在编辑器中一样。

  

错误:语法错误,无法识别的表达式:{' status':'找不到任何内容'}   小号

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:5)

嗯,你不能通过使用类似VC的核心短代码直接在你的模板中输出内容。

1。问题:

为了安全起见,除了现时,VC使用page_idshortcode_id来检查AJAX请求/响应数据。

shortcode_id由VC自动生成,您无法对其进行编码。

例如,这是您在管理员编辑器屏幕上看到的短代码:

[vc_basic_grid post_type="post_type" max_items="10" item="masonryGrid_SlideFromLeft" grid_id="vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10" taxonomies="555"]

假设页面ID为4269,这是前端生成的HTML代码:

<!-- vc_grid start -->
<div class="vc_grid-container-wrapper vc_clearfix">
    <div class="vc_grid-container vc_clearfix wpb_content_element vc_masonry_grid" data-initial-loading-animation="zoomIn" data-vc-grid-settings="{"page_id":4269,"style":"all-masonry","action":"vc_get_vc_grid_data","shortcode_id":"1458178666639-80ebf3775500c87d35de078c3422fe96-10","tag":"vc_masonry_grid"}" data-vc-request="http://example.com/wp-admin/admin-ajax.php" data-vc-post-id="4269" data-vc-public-nonce="0641473b09">
    </div>
</div>
<!-- vc_grid end -->

现在,如果page_idshortcode_id彼此不匹配,{'status':'Nothing found - $shorcode_id'}将会被淘汰,并且不会显示任何内容。

您可以在vc_grid.min.js文件中找到更多信息。

2。溶液

  • 使用VC生成虚假页面,然后将生成的html代码复制到模板文件中。
  • Create a template直接与VC合作。
  • 使用Shorcode Mapper创建自己的shorcode。

答案 1 :(得分:1)

首先构建一个新页面并在其上添加一个网格帖子, 然后我们得到

  

_vc_post_settings

发布meta,并尝试构建一个新的 然后更新后元数据 现在我们可以通过VC Ajax安全检查 在以下代码中&#34; 1513628284966-37b8c3ca-d8ec-1&#34;是VC生成的guid 你应该把它换成你的。

$meta = get_post_meta(1365,'_vc_post_settings');
 $settings = array();
 #$settings['vc_grid_id'] = $meta[0]['vc_grid_id'];
 $key = random_int(1513628284966,9513628284966);
 $settings['vc_grid_id']['shortcodes'][''.$key.'-37b8c3ca-d8ec-1'] = $meta[0]['vc_grid_id']['shortcodes']['1513628284966-37b8c3ca-d8ec-1'];
 $settings['vc_grid_id']['shortcodes'][''.$key.'-37b8c3ca-d8ec-1']['atts']['custom_query'] = "tag=shop";
 $settings['vc_grid_id']['shortcodes'][''.$key.'-37b8c3ca-d8ec-1']['atts']['grid_id'] = ''.$key.'-37b8c3ca-d8ec-1';
$n = add_post_meta(1365,'_vc_post_settings',$settings);


return do_shortcode("[vc_basic_grid post_type=\"custom\" show_filter=\"yes\" filter_style=\"dropdown\" item=\"5959\" grid_id=\"vc_gid:".$key."-37b8c3ca-d8ec-1\" filter_source=\"post_tag\" custom_query='tag=".$tag."']");

答案 2 :(得分:1)

我解决了。
使用WpBakery提供的Visual Composer编辑器时,我遇到了同样的问题 https://wpbakery.com/
在了解了区块ID与帖子ID之间的联系之后,我更加关注了区块的设置。

实际上有一个字段称为“ 元素ID ”,在这里我们必须输入我们正在编辑的帖子ID

就我而言,该区块是一个包含一些帖子的区块。

enter image description here

保存并在没有编辑器的情况下查看页面,我终于能够看到该块,而不是消息

{"status":"Nothing found"}

答案 3 :(得分:0)

我找到了解决此问题的方法。 我修改了woocommerce类别模板,并链接到woocommerce_archive_description钩子,以从某些页面添加其他描述,为此我获得了它们的ID,然后显示了内容。

echo do_shortcode($post->post_content);

图库(媒体网格)不起作用,因为页面ID和简码ID之间不匹配。因此,合理的解决方案是将全局变量$ post重新定义为我从中获取内容的页面的$ post。

global $post;
$post = get_post( $id );

事实证明帖子ID匹配。

在那之后,别忘了返回正常的$ post值;

wp_reset_postdata();

顺便说一句-使用此选项可以加载wpbakery元素的自定义样式。

echo '<style type="text/css" data-type="vc_shortcodes-custom-css">' . get_post_meta( $id, '_wpb_shortcodes_custom_css', true ) . '</style>';

整个代码

function extra_product_category_desc(){
    if( is_product_category() ){
        $id = get_term_meta (get_queried_object()->term_id, 'pageId', true);
        if($id !== ''){
            global $post;
            $post = get_post( $id );
            echo do_shortcode($post->post_content);
            echo '<style type="text/css" data-type="vc_shortcodes-custom-css">' . get_post_meta( $id, '_wpb_shortcodes_custom_css', true ) . '</style>';
            wp_reset_postdata();
        }
    }
}
add_action( 'woocommerce_archive_description', 'extra_product_category_desc', 11 );

答案 4 :(得分:-2)

您也可以尝试使用do_shortcode('');

喜欢

do_shortcode('[vc_basic_grid post_type =“post_type”max_items =“10”item =“masonryGrid_SlideFromLeft”grid_id =“vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10”taxonomies =“555”]');

最诚挚的问候,