我的代码:
// 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中需要基本属性
这些是我之前查看过的资源:
相关文件:
非常感谢任何帮助。
答案 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' ) );