覆盖未挂接或在unctions.php文件中的父主题函数

时间:2013-05-30 作者:Jason

我需要从父主题中删除一个函数,并在子主题中替换它。

该函数称为print\\u meta($meta\\u box)。该函数不可插入,它位于随机文件中,而不是函数中。php文件。

该函数向页面或帖子中显示的元框添加选项。我需要添加更多选项,但要做到这一点,我从子主题中重新编写函数。

我认为我不能使用remove\\u filter(),因为函数没有挂钩。

我试过这个:print\\u meta($meta\\u box)

function remove_parent_theme_functions( $meta_box ) {
  remove_filter( \'init\', \'print_meta\' );
}
add_action( \'after_setup_theme\', \'remove_parent_theme_functions\' );
但我不知道该用什么标签。我试过各种各样的。

由于该函数对于设置metabox选项至关重要,因此我假设,如果在使用metabox时成功删除该函数,则会出现错误或选项不会出现。

到目前为止,我似乎不在乎我使用什么标签。

这可能吗?

2 个回复
SO网友:s_ha_dum

这可能吗?

如果您的描述正确并且。。。

该函数是不可插拔的,我想你的意思是不封装在if (!function_exists()) 条件和

  • 该函数不是对操作或筛选器的回调,并且该函数不在由模板加载系统自动替换的主题文件中
  • 。。。然后,除非编辑定义了该函数的父主题文件,否则无法删除或替换该函数;然后,是的,除非使用相同名称的更改但兼容的版本替换该函数,否则将出现错误。更新父对象时,将覆盖对父对象的编辑。

  • SO网友:Jason

    所以我找到了一个方法。与其说这是一个答案,不如说这是一个你可以尝试的答案。

    因为我无法删除我的目标函数。我将函数追溯到调用它的位置,然后追溯到调用该函数的位置。。。它碰巧有一个add\\u操作。

    所以我过滤掉了那个动作。这反过来又过滤掉了导致我的目标函数的函数。

    现在这三个函数都被过滤掉了。因此,我添加了一个新的函数名,并在到达目标函数后进行了必要的更改。现在,从add\\u操作开始,我有三个新的命名函数和所需的更改。

    它起作用了,只是需要仔细复制一下。

    结束

    相关推荐

    如何访问调用Apply_Filters()的函数中的变量?

    我试图根据调用的函数中的变量是否apply_filters() 等于特定值。该变量不会传递给apply_filters() 参数。这或许可以解释我的意思:// function in wordpress core function get_var_b() { // generating $var_a $var_a = \"a\"; // some code ... $var_b = apply_filters(\'get_var_b\