Php 替换Custormizr主题的父操作
我创造了我自己的孩子主题。一切都很好,除了我不能注销hoook $这是classPhp 替换Custormizr主题的父操作,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,我创造了我自己的孩子主题。一切都很好,除了我不能注销hoook $这是classTC\u footer\u main,以下代码位于\u构造中 add_action ( '__colophon' , array( $this , 'tc_colophon_center_block' ), 20 ); 我尝试了几个删除操作,但没有成功。我正在尝试更改/删除页脚: remove_action('u_colophon','tc_colophon'u center_block',55) 或
TC\u footer\u main
,以下代码位于\u构造中
add_action ( '__colophon' , array( $this , 'tc_colophon_center_block' ), 20 );
我尝试了几个删除操作,但没有成功。我正在尝试更改/删除页脚:
remove_action('u_colophon','tc_colophon'u center_block',55)代码>
或
remove_action('u_冒号',数组('TC_footer_main','TC_冒号_center_block'),55)代码>
我也试过了
remove_操作(“u冒号”,TC_页脚_主::$instance->TC_冒号_中心_块(),55)代码>
但这引发了一个错误,因为在运行我的functions.php
文件时,TC\u footer\u main
未加载。为了便于您在function.php中添加以下代码。它将在设置主题挂钩后被调用
// replace parent function
function child_theme_function () {
// your code goes here
}
function my_theme_setup () {
remove_action( '__colophon', 'tc_colophon_center_block', 1000 );
add_action( '__colophon', 'child_theme_function', 1000 );
}
add_action( 'after_setup_theme', 'my_theme_setup' );
您还可以尝试从子类重写父类,如下所述:
我正在尝试更改/删除页脚:
我认为修改tc\u colophon\u center\u block()
方法的输出比必须修改的要复杂得多
只需使用tc\u credits\u显示
过滤器:
add_filter( 'tc_credits_display', function( $html )
{
// Modify output to your needs!
return $html;
} );
根据您的需要修改该块
要完全删除输出(如果允许),只需使用:
add_filter( 'tc_credits_display', '__return_null', PHP_INT_MAX );
您可以进一步访问以下筛选器:
tc\u版权链接
tc\u信用链接
tc\u wp\u供电
选择
就这样 您离得不太远……您可能遇到的一个问题是,在父主题添加钩子之前,您正在尝试删除钩子。该类可以在稍后阶段初始化
我不太确定你的钩子什么时候跑,但希望是在初始化之后
add_action('init', 'remove_parent_hook');
function remove_parent_hook(){
remove_action( '__colophon' , array('TC_footer_main','tc_colophon_center_block') , 20); // needs to be the same priority
}
显然,现在您可以为新函数添加一个操作
添加了匿名函数的可能性很小,在尝试删除挂钩函数时,&$this
的重要性常常被忽略。这是一种痛苦,因为wp会将一个随机字符串指定为函数的键名&函数名,每次都不同,因此无法猜测。但是我们可以在键中搜索函数名,这样类似的东西就可以工作了
function remove_anon_hk($hook, $function, $priority=10 ){
global $wp_filter;
$hooks= $wp_filter[$hook][$priority];
if(empty ($hooks))
return;
foreach($hooks as $hk=>$data):
if(stripos($hk, $function) !== false ){
unset($wp_filter[$hook][$priority][$hk]);
}
endforeach;
}
add_action('init', function(){
remove_anon_hk('__colophon', 'tc_colophon_center_block');
});
你的解决方案只让我走了一半。我可以输出我的页脚,但不能删除旧的页脚。那是因为它在一个类中TC\u footer\u main
要删除您可以使用的旧页眉:有关更多参考信息,请访问:ps:我不是附属公司,但看起来专业版使您能够通过自定义设置直接修改页眉。谢谢,我可以自己更改页眉,但我希望获得这样做的最佳实践。而不是在父主题中硬编码