web-dev-qa-db-fra.com

Déclarer une fonction avant que le plugin ne le fasse sur le fichier theme functions.php

Je travaille avec un plugin qui déclare une fonction en utilisant ce format:

if (!function_exists('ABdevDND_get_current_post_type')){
    function ABdevDND_get_current_post_type() {
       ...
    }
}

J'essaie de le déclarer dans le fichier functions.php de mon thème, en utilisant simplement:

function ABdevDND_get_current_post_type() {
    ...
}

Mais mon timing est mauvais et j'obtiens Fatal error: Cannot redeclare ABdevDND_get_current_post_type().

Comment et où puis-je déclarer cette fonction afin qu'elle soit déclarée avant le plugin?

3

Vous ne pouvez pas faire cela dans un thème, car les thèmes sont chargés after plugins.

Utilisez un plugin personnalisé, peut-être un plug-in mu pour être sûr, car ils sont chargés plus tôt que des plugins normaux.

3
fuxia

Sur l'inverse ici, j'ai récemment eu la question d'un thème remplaçant une fonction de plugin sur l'activation de plugin. Le code de thème est chargé avant l'activation du plug-in afin de mettre en mémoire tampon les erreurs fatales. Vous verrez l'erreur précédemment déclarée même si la chaîne d'actions fonctionne toujours correctement après l'activation. Vous pouvez utiliser ceci pour désactiver votre remplacement de fonction pour la page de plugins où vous n'en aurez probablement jamais besoin.

Il serait bien que WordPress tente d’activer le plugin avant le plugins_loaded, mais ce n’est pas le cas ici.

global $pagenow;
if ( $pagenow !== 'plugins.php' )
{
    //declare your function here
}
1
Brian Fegter