将html_template参数添加到Visual Composer

时间:2016-12-06 19:29:21

标签: php wordpress visual-composer

我的代码:

    // 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中需要基本属性

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

相关文件:

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

实际上,函数vc_map_update仅返回短代码的参数,但不返回所有设置。

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

使用:$element = vc_get_shortcode('vc_row');

此外,无需替换元素,因为vc_map_update显然会更新它。

答案 1 :(得分:0)

我找到了解决方案:

我发现我过于复杂了。我找到了用于手动设置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' ) );