2

我的代码:

    // Add language dropdown to visual composer settings
    if (function_exists('vc_add_param')) {
        vc_add_param('vc_row', array(
            'type' => 'dropdown',
            'heading' => "Language",
            'param_name' => 'language',
            'value' => array("English", "Russian"),
            'description' => __("Select Language", "discprofile"),
            'weight' => 1, //  default 0 (unsorted, appened to bottom, 1- append to top)
        ));
    }

    // Set custom html_template to display data-lang attribute
    if (function_exists('vc_map')) {

        // setup custom attributes
        $attributes = array(
            'html_template' => 'vc_templates/vc_row.php'
        );

        // Update 'vc_row' to include custom vc_row template and remap shortcode
        $params = vc_map_update('vc_row', $attributes);

        // Remove default vc_row
        vc_remove_element('vc_row');

        // Remap shortcode with custom template
        vc_map($params['vc_row']);
    }

vc_add_param() 有效,但代码的第二部分引发以下错误:

( ! ) 致命错误:错误的 vc_map 对象。在第 26 行的 /Users/mike/Sites/Fun/wordpress/web/app/plugins/js_composer/include/helpers/helpers_api.php 中需要基本属性

这些是我之前看过的资源:

相关文件:

任何帮助将不胜感激。

4

2 回答 2

2

我找到了一个解决方案:

我发现我过于复杂了。我找到了手动设置 vc_templates 目录的 Visual Composer 方法。无需更新简码 html_template 参数,也无需映射新的简码。

这将代码简化为以下内容:

// Set custom html_template to display data-lang attribute
$dir = __DIR__ . '/vc_templates';
vc_set_shortcodes_templates_dir( $dir );
var_dump( vc_shortcodes_theme_templates_dir( 'vc_row.php' ) );
于 2017-04-18T16:01:48.990 回答
0

实际上,函数vc_map_update只返回简码参数,而不是所有设置。

您需要使用vc_get_shortcode将返回整个元素的函数。

和:$element = vc_get_shortcode('vc_row');

此外,没有必要更换元素,因为vc_map_update它会明显更新。

于 2016-12-07T15:15:20.543 回答