web-dev-qa-db-fra.com

Remplacer la fonction de thème parent qui n'est pas accrochée ou dans le fichier functions.php

Je dois supprimer une fonction du thème parent et la remplacer dans le thème enfant.

La fonction s'appelle print_meta ($ meta_box). La fonction n'est pas connectable et se trouve dans un fichier aléatoire, pas dans le fichier functions.php.

La fonction ajoute des options à une métabox qui apparaît dans une page ou une publication. J'ai besoin d'ajouter plus d'options, mais pour ce faire, je réécris la fonction à partir du thème de l'enfant.

Je ne pense pas pouvoir utiliser remove_filter () car la fonction n'est pas accrochée.

J'ai essayé ceci: print_meta ($ meta_box)

function remove_parent_theme_functions( $meta_box ) {
  remove_filter( 'init', 'print_meta' );
}
add_action( 'after_setup_theme', 'remove_parent_theme_functions' );

mais je ne sais pas quelle étiquette utiliser. J'ai essayé toutes sortes.

Étant donné que la fonction est essentielle à la configuration de l'option metabox, je suppose que si je supprime correctement la fonction lorsque j'utilise metabox, une erreur doit apparaître ou les options ne doivent pas apparaître.

Jusqu'ici, j'apparais, quelle que soit l'étiquette que j'utilise.

Est-ce seulement possible?

1
Jason

Est-ce seulement possible?

Si votre description est correcte et ...

  1. La fonction n’est pas connectable, ce qui signifie que je veux dire non enveloppé dans une condition if (!function_exists()) et
  2. La fonction n'est pas un rappel pour une action ou un filtre et
  3. La fonction ne se trouve pas dans un fichier de thème qui est automatiquement remplacé par le système de chargement de modèle

... alors vous ne pouvez pas le supprimer ou le remplacer sauf en éditant le fichier de thème parent où la fonction est définie, puis oui, à moins que vous ne remplaciez cette fonction par une version modifiée mais compatible du même nom, vous obtiendrez des erreurs . Et les modifications apportées au parent seront écrasées lorsque le parent sera mis à jour.

1
s_ha_dum

Alors j'ai trouvé un moyen de le faire. Ce n'est pas tellement une réponse mais quelque chose que vous pouvez essayer.

Puisque je ne pouvais pas supprimer la fonction que je visais. J'ai tracé la fonction jusqu'à l'endroit où elle était appelée, puis à l'endroit où cette fonction s'appelait ... ce qui est arrivé pour avoir un add_action.

J'ai donc filtré cette action. Ce qui à son tour a filtré la fonction qui mène à ma fonction ciblée.

Les trois fonctions sont maintenant filtrées. J'ai donc ajouté ensuite en donnant à chacun un nouveau nom de fonction et une fois que je suis arrivé à ma fonction ciblée, j'ai apporté les modifications nécessaires. Maintenant, formez add_action avec trois nouvelles fonctions nommées et les modifications dont j'avais besoin.

Cela a fonctionné il a juste fallu une copie soigneuse.

0
Jason