web-dev-qa-db-fra.com

La suppression des méthodes de contact de l'utilisateur fonctionne à partir de functions.php mais pas d'un plugin.

Je voudrais supprimer les champs d'utilisateur et j'ai utilisé ce code:

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

    return $user_contact;
 }

Si j'utilise ce code dans functions.php de mon thème, cela fonctionne, mais si j'utilise ce code dans un plugin, cela ne fonctionne pas.

Pourquoi? Comment puis-je le résoudre?

1
Erfo

Cela pourrait être le problème d'ajuster la priorité de votre rappel de filtre, car les fichiers de plugins sont exécutés avant le fichier de thème functions.php. Cela pourrait expliquer pourquoi cela fonctionne dans votre fichier functions.php, si la priorité est la même.

Lorsque vous ajoutez l'extrait de code à un plug-in, celui-ci peut être exécuté avant les autres plug-ins qui utilisent le même filtre.

La priorité par défaut est 10, vous devriez donc essayer quelque chose de plus élevé dans votre code de plugin, par exemple:

add_filter( 'user_contactmethods', 'newfields', 99 );

ou même

add_filter( 'user_contactmethods', 'newfields', PHP_INT_MAX );

si vous voulez être absolument sûr que votre rappel de filtre est le dernier à être exécuté - en supposant que les autres plugins n'utilisent pas aussi PHP_INT_MAX.

Mieux encore, il suffit de vérifier la priorité des rappels de filtre user_contactmethods que les autres plug-ins utilisent.

1
birgire