如何删除对子主题的自定义操作?

时间:2017-08-08 作者:CodeAlb

在父主题上index.php 我有以下代码:

// The function.
add_action( \'mytheme_example_action\', \'mytheme_example_function\' );
function mytheme_example_function() {
    echo \'Example text on index page.\'
}

// After function was defined i do the action.
do_action( \'mytheme_example_action\' );
关于子主题functions.php 我有以下代码:

// Example 1 (not working).
add_action( \'mytheme_example_action\', \'mytheme_remove_parent_function\', 20);
function mytheme_remove_parent_function() {
    remove_action( \'mytheme_example_action\', \'mytheme_example_function\' );
}

// Example 2 (not working).
remove_action( \'mytheme_example_action\', \'mytheme_example_function\' );
我试过两个例子,仍然是重复的文本\'Example text on index page.\' 正在浏览器上显示。有什么帮助吗?

1 个回复
最合适的回答,由SO网友:Aaron Lynch 整理而成

要删除动作挂钩,请使用与在父主题中添加动作相同的动作名称、回调名称和优先级您应该将函数从中定义index.phpfunctions.php 父主题的init.所以你最终会得到这样的结果:

父主题代码

functions.php

// The function.
add_action( \'mytheme_example_action\', \'mytheme_example_function\' );
function mytheme_example_function() {
    echo \'Example text on index page.\';
}
子主题代码functions.php

// Example 1
add_action( \'init\', \'mytheme_remove_parent_function\');
function mytheme_remove_parent_function() {
     remove_action( \'mytheme_example_action\', \'mytheme_example_function\' );
}
期末笔记Here\'s a great tutorial 这将向您展示实现所需结果的几种方法。

结束