【发布时间】:2017-06-05 12:08:15
【问题描述】:
我在我的 word press 上安装了一个使用 Visual Composer 的主题。但是在安装它之后,我发现这个主题已经禁用了 Visual Composer 中的一些元素。退出一段时间后,我发现正在执行删除这些元素的文件。
我创建了一个子主题以覆盖此功能,但没有成功。
原来的函数是这样的:
if ( ! function_exists('remove-elements-from-vc') ) {
function remove-elements-from-vc() {
/*** Remove Grid Elements if grid elements disabled */
vc_remove_element('vc_basic_grid');
vc_remove_element('vc_media_grid');
vc_remove_element('vc_masonry_grid');
vc_remove_element('vc_masonry_media_grid');
vc_remove_element('vc_icon');
vc_remove_element('vc_button2');
vc_remove_element("vc_custom_heading");
/*** Remove unused parameters from grid elements */
if (function_exists('vc_remove_param')) {
vc_remove_param('vc_basic_grid', 'button_style');
vc_remove_param('vc_basic_grid', 'button_color');
vc_remove_param('vc_basic_grid', 'button_size');
vc_remove_param('vc_basic_grid', 'filter_color');
vc_remove_param('vc_basic_grid', 'filter_style');
vc_remove_param('vc_media_grid', 'button_style');
vc_remove_param('vc_media_grid', 'button_color');
vc_remove_param('vc_media_grid', 'button_size');
vc_remove_param('vc_media_grid', 'filter_color');
vc_remove_param('vc_media_grid', 'filter_style');
vc_remove_param('vc_masonry_grid', 'button_style');
vc_remove_param('vc_masonry_grid', 'button_color');
vc_remove_param('vc_masonry_grid', 'button_size');
vc_remove_param('vc_masonry_grid', 'filter_color');
vc_remove_param('vc_masonry_grid', 'filter_style');
vc_remove_param('vc_masonry_media_grid', 'button_style');
vc_remove_param('vc_masonry_media_grid', 'button_color');
vc_remove_param('vc_masonry_media_grid', 'button_size');
vc_remove_param('vc_masonry_media_grid', 'filter_color');
vc_remove_param('vc_masonry_media_grid', 'filter_style');
vc_remove_param('vc_basic_grid', 'paging_color');
vc_remove_param('vc_basic_grid', 'arrows_color');
vc_remove_param('vc_media_grid', 'paging_color');
vc_remove_param('vc_media_grid', 'arrows_color');
vc_remove_param('vc_masonry_grid', 'paging_color');
vc_remove_param('vc_masonry_grid', 'arrows_color');
vc_remove_param('vc_masonry_media_grid', 'paging_color');
vc_remove_param('vc_masonry_media_grid', 'arrows_color');
}
}
add_action('vc_after_init', 'remove-elements-from-vc');
}
这就是我在functions.php中的子主题中尝试做的事情:
add_action( 'vc_after_init', 'undo-remove-elements-from-vc' );
function undo-remove-elements-from-vc(){
remove_action( 'vc_after_init', 'remove-elements-from-vc');
}
导致此操作的函数位于名为“visual-composer-config.php”的文件中,它是从名为“load.php”的同级文件中加载的
if (visual_composer_installed()) {
include_once ELATED_FRAMEWORK_MODULES_ROOT_DIR.'/visualcomposer/visual-composer-functions.php';
include_once ELATED_FRAMEWORK_MODULES_ROOT_DIR.'/visualcomposer/visual-composer-config.php';
}
我不想编辑原始主题代码以防以后有任何主题更新,这些更改将被删除。所以我需要从儿童主题中找到解决方案。
谢谢
【问题讨论】:
-
remove_action调用中的函数名称是您自己的函数名称,而不是父主题中的函数名称...应该是remove-elements-from-vc -
等等...函数名中的破折号还能用吗?
-
我的错,我在这里写错了函数名,在原始文件中我调用了正确的函数。
-
命名只是随机命名,我用“undo-remove-elements-from-vc”等替换了我原来的函数名……原来的函数不包含“-”跨度>
-
尝试将您的
add_action调用的优先级更改为更早(默认为10),所以它看起来像这样:add_action('vc_after_init', 'function_name', 5);- 5 应该没问题,它只需要在 10 之前。 .
标签: wordpress themes visual-composer