Wordpress 具有do_操作短代码的Visual Composer网格不工作

Wordpress 具有do_操作短代码的Visual Composer网格不工作,wordpress,Wordpress,我有一个视觉作曲家,它充满了整个主题。当我在编辑器的页面中放入以下网格短代码时,它可以正常工作 [vc_basic_grid post_type=“post_type”max_items=“10”item=“masonryGrid\u slidefromfleft”grid=“vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10”taxonomies=“555”] 但是,当我使用do_操作调用完全相同的代码时,会出现以下javascri

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

[vc_basic_grid post_type=“post_type”max_items=“10”item=“masonryGrid\u slidefromfleft”grid=“vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10”taxonomies=“555”]

但是,当我使用do_操作调用完全相同的代码时,会出现以下javascript错误。我检查了html输出,使用do_操作(如将短代码放入编辑器)也是一样的

错误:语法错误,无法识别的表达式:{'status':'Nothing found'} s
非常感谢您的帮助。

好吧,您不能使用VC的核心短代码直接在模板中输出内容

1.问题: 为了安全起见,除了nonce之外,VC还使用
page\u id
shortcode\u id
检查AJAX请求/响应数据

shortcode\u id
是由VC自动生成的,您不能对其进行编码

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

[vc_basic_grid post_type=“post_type”max_items=“10”item=“masonryGrid_slidefromfleft”grid=“vc_gid:1458178666639-80ebf3775500c87d35de078c3422fe96-10”分类法=“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\u id
shortcode\u id
不匹配,
{'status':'Nothing found-$shorcode\u id'}
将被抛出,并且不会显示任何内容

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

2.解决方案:
  • 用VC生成一个假页面,然后将生成的html代码复制到模板文件中
  • 直接与VC
  • 用于创建自己的shorcode

您也可以尝试使用do_快捷码(“”)

do_shortcode('[vc_basic_grid post_type=“post_type”max_items=“10”item=“masonryGrid_slidefromfleft”grid=“vc_gid:14581786639-80ebf3775500c87d35de078c3422fe96-10”taxonomies=“555”])


致以最诚挚的问候,

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

_vc\u post\u设置

发布meta,并尝试构建一个新的meta 然后更新post元数据 现在我们可以通过VC Ajax安全检查了 在以下代码中,“1513628284966-37b8c3ca-d8ec-1”是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."']");
我已经解决了。
我也有同样的问题,WpBakery提供的可视化作曲家编辑器
在理解了块ID和Post ID之间的连接之后,我更加关注块的设置

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

在我的例子中,这个块是一个包含一些帖子的块

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

{"status":"Nothing found"}

我找到了解决这个问题的办法。 我修改了woocommerce类别模板,并链接到woocommerce_archive_description钩子,以添加一些页面中的其他描述,为此我获取了它们的id,然后显示内容

echo do_shortcode($post->post_content);
global $post;
$post = get_post( $id );
gallery(媒体网格)无法工作,因为页面id和快捷码id不匹配。因此,逻辑解决方案是将全局变量$post重新定义为获取内容的页面的$post

echo do_shortcode($post->post_content);
global $post;
$post = get_post( $id );
结果证明post 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>';
echo“”。获取“post”meta($id,“\uwpb\ushortcode\ucustom\ucss”,true)。”;
全部代码

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 );
功能额外产品类别描述(){
如果(是产品类别()){
$id=get_term_meta(get_queryd_object()->term_id,'pageId',true);
如果($id!=''){
全球$员额;
$post=获取邮政($id);
echo do_短代码($post->post_内容);
回显“”。获取帖子元($id,''.'wpb'.'短代码'.'custom'.'css',true)。'';
wp_reset_postdata();
}
}
}
添加行动('woocommerce\u archive\u description'、'extra\u product\u category\u desc',11);

同样的问题,正在寻找您正在使用的解决方案do\u shortcode()对吗?我不确定是否理解您的解决方案。在这种情况下,我使用的是vc提供的快捷代码[vc\U basic\U grid]。我做了任何更改,但仍然得到错误,那么错误是页面id(supose 4269)是因为生成的短代码id与页面id不匹配(比如1458178666639-80ebf3775500c87d35de078c3422fe96-10)??那是我的错还是VC的错?是你的错。当您在管理员编辑器屏幕上复制shorcode时,它是一个不完整的shorcode。VC做了另一个步骤,就像我说的,那就是数据验证。为了便于理解:首先,您使用VC的后端编辑器创建一个假页面,然后在前端查看该页面,查看HTML源代码,您将发现一块代码
。在该代码块中,您将看到
shorcode\u id
page\u id
nonce
。。。无法复制和粘贴的。这就是问题所在。现在我明白你的意思了。这就是我正在做的,我在一个页面中输入后端编辑器(不久前创建的)。我使用VC添加一行和VC_网格组件(以图形方式)。然后我保存并得到这个错误。我没有复制或播送任何文本。@ProgramadorAdagal所以错误出现在管理屏幕控制台上?真奇怪!因为保存页面时,只保存原始短代码。VC在前端调用页面之前不会呈现任何内容。我猜我的解释不是很好,所以很抱歉。我的意思是,在管理面板中,我使用后端编辑器编写页面,保存后,在前端抛出该错误。我没有改变