我在使用Visual Composer的word press上安装了一个主题 . 但是在安装之后我发现主题已经禁用了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';
}
我不想在以后进行任何主题更新的情况下编辑原始主题代码,更改将被删除 . 所以我需要从儿童主题中找到解决方案 .
谢谢
1 回答
因为有问题的函数包含在
if ( ! function_exists('') )
中(读取:"if this function does not exist"),您应该能够在父项之前声明它 . 这将阻止父函数内的代码被运行 .注意:我替换了你的连字符(
-
),因为我没有看到连字符语法并且认为这是一个错字 . 根据我的经验,使用的正确语法是下划线(_
) .你可以在你孩子主题的
functions.php
文件中添加这样的东西:但是,您的
remove_action()
也应该可以正常工作 . 它's possible you' re函数在父主题's function is hooked. You can' t删除之前挂钩,直到 after 添加它为止 . 来自the codex:如果是这种情况,您可以尝试以较低的优先级添加它: