从函数.php中删除用户联系人方法有效,但不能从插件中删除

时间:2014-08-04 作者:Erfo

我想删除用户字段,我使用了以下代码:

add_filter( \'user_contactmethods\', \'newfields\' );
function newfields( $user_contact ) {
    unset($user_contact[\'facebook\']);
    unset($user_contact[\'twitter\']);

    return $user_contact;
 }
如果我在中使用此代码functions.php 在我的主题中,它是有效的,但如果我在插件中使用此代码,它就不起作用。

为什么?我如何解决它?

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

这可能是调整过滤器回调的优先级的问题,因为插件文件是在functions.php 主题文件。这可以解释为什么它在你的functions.php 文件,如果优先级相同。

将代码段添加到插件时,它可能会在使用相同筛选器的其他插件之前执行。

默认优先级为10, 因此,您应该在插件代码中尝试更高级的内容,例如:

add_filter( \'user_contactmethods\', \'newfields\', 99 );
甚至

add_filter( \'user_contactmethods\', \'newfields\', PHP_INT_MAX );
如果您想绝对确保过滤器回调是最后一个要执行的回调-假设其他插件没有使用PHP_INT_MAX

但更好的是,只需检查优先级user_contactmethods 筛选其他插件正在使用的回调。

结束

相关推荐

Sort users by meta_value_num

我在使用WP_User_Query 要按元数值对用户进行排序,我认为这很简单,因为它只按字母降序显示结果。 <?php $args = array( \'orderby\' => \'meta_value_num\', \'meta_key \' => \'epicredvote\', \'order\' => \'DESC\', ); // The Query $user_query = n