override filter in a plugin

时间:2015-10-13 作者:1td

我正在尝试删除由插件设置的两个contactmethods。我读了很多关于添加/删除操作的书,但没有找到关于添加/删除筛选器的内容。

原始插件代码:

function pg_contactmethods( $contactmethods ) {
$contactmethods[ \'twitter\' ]  = \'Twitter\';
$contactmethods[ \'facebook\' ] = \'Facebook\';

unset( $contactmethods[ \'aim\' ] );
unset( $contactmethods[ \'yim\' ] );
unset( $contactmethods[ \'jabber\' ] );

return $contactmethods;
}
add_filter( \'user_contactmethods\', \'pg_contactmethods\', 10, 1 );
我可以注释掉推特和脸书上的行,这很有效,但我不想修改原来的插件。

我创建了一个功能插件,并添加了以下内容:

remove_filter( \'user_contactmethods\', \'pg_contactmethods\', 10, 1 );
没有任何变化。

尝试在新函数中仅使用以下两行:

unset ( $contactmethods[ \'twitter\' ] );
unset ( $contactmethods[ \'facebook\' ] );
没有任何变化。

在我的功能插件中尝试了以下删除过滤器/添加过滤器:

remove_filter (\'user_contactmethods\', \'pg_contactmethods\', 10, 1);
add_filter (\'user_contactmethods\', \'my_contactmethods\', 10, 1);
function my_contactmethods( $contactmethods ) {
//$contactmethods[ \'twitter\' ]  = \'Twitter\';
//$contactmethods[ \'facebook\' ] = \'Facebook\';

unset( $contactmethods[ \'aim\' ] );
unset( $contactmethods[ \'yim\' ] );
unset( $contactmethods[ \'jabber\' ] );

return $contactmethods;
}
同样,一切都没有改变。

对我做错了什么有什么建议吗?

编辑:我正在使用WP 4.3.1,带有子主题。

1 个回复
SO网友:1td

我的错误是,我试图从我自己的插件中删除插件的过滤器。为了修改插件的过滤器,remove\\u filter()函数必须位于子主题的函数中。php文件。