web-dev-qa-db-fra.com

Comment remplacer une fonction de thème parent débranchable?

J'ai un modèle PHP dans mon thème enfant qui appelle une fonction ale_filter(), via

        <div class="articles">
            <?php ale_filter($_POST);?>
        </div>

La fonction est définie dans un fichier de thème parent: /aletheme/functions.filter.php. J'aimerais copier ce fichier dans mon thème enfant, apporter des modifications à la fonction et m'assurer que le modèle PHP en question appelle cette fonction et non la fonction de thème parent. Comment je le fais?

J'ai déjà copié le fichier de thème parent dans mon thème enfant, en utilisant le même nom de fichier et le même chemin d'accès (/aletheme/functions/filter.php).


A question précédente Stack Exchange liée à une page avec trois méthodes. Ces trois méthodes étaient:

  • Profiter des fonctions connectables - Cette méthode s’applique uniquement si la fonction de thème parent est connectable. Le mien n'est pas.
  • Augmenter la priorité pour la fonction thème enfant - je ne sais pas trop comment procéder dans mon cas. L'exemple donné concernait une fonction de thème parent associée à un hook WordPress, mais pas la mienne. La page de manuel PHP sur proc_Nice n’était pas aussi claire. J'imagine que je pourrais en parler un peu plus tard. Peut-être que quelqu'un ici a des idées.
  • Utilisation de points d'ancrage, d'actions et de filtres - Cette méthode ne s'applique que si la fonction de thème parent est associée à un point d'ancrage WordPress. Je ne crois pas que cela s'applique dans mon cas.

J'ai trouvé plusieurs autres questions sur Stack Exchange, mais les réponses à toutes les méthodes décrites ne s'appliquent pas dans mon cas:

Merci.

4
cag8f

Comme la fonction est utilisée dans le modèle de votre thème enfant, rien ne vous empêche d'utiliser une fonction portant un nom différent. Donc, vous n'avez pas réellement besoin de brancher la fonction, il vous suffit de créer une fonction qui fait ce que vous voulez et de l'utiliser à la place.

Copiez donc ale_filter() dans votre thème enfant, renommez-le à l'identique ale_child_filter(), modifiez-le comme bon vous semble, puis modifiez simplement votre modèle pour utiliser cette fonction.

Vous devez uniquement connecter une fonction si celle-ci est utilisée quelque part que vous ne pouvez pas écraser avec votre thème enfant. Le brancher vous permettrait de redéfinir une fonction lorsque vous n’avez pas l’accès pour changer son utilisation. Étant donné que vous avez la possibilité de changer la fonction utilisée, il est inutile de la brancher.

6
Jacob Peattie