web-dev-qa-db-fra.com

Est-il faux d'utiliser l'approche oop sur functions.php?

Je construis un thème, et j'utilise une approche oop. Néanmoins, tous les thèmes du code source que j'ai vu jusqu'à présent utilisent une approche procédurale, ils écrivent donc ce type de code:

If ( ! function_exists( ‘my_theme_function’ ) ) { 
  my_theme_function() {
    // code function here
  }
}

Alors, quelle est la méthodologie idéale à utiliser sur mon functions.php? est-il même considéré comme une mauvaise pratique dans ce contexte? Je vous remercie..!!

1
Roberto

Comme décrit dans l'entrée Thèmes enfants dans le codex:

CONSEIL POUR LES DÉVELOPPEURS DE THÈMES. Le fait que le fichier functions.php soit chargé en premier signifie que vous pouvez brancher les fonctions utilisateur de votre thème (c’est-à-dire, les remplacer par un thème enfant) en les déclarant de manière conditionnelle.

if ( ! function_exists( 'theme_special_nav' ) ) {
function theme_special_nav() {
    //  Do something.
    }
}

De cette manière, un thème enfant peut remplacer une fonction PHP du parent en le déclarant simplement au préalable.

Si le thème que vous développez sera publié pour un usage général (c'est-à-dire que vous le soumettrez au référentiel wordpress.org), vous devriez définitivement intégrer des fonctionnalités qui permettent qui construisent des thèmes enfants en fonction de votre thème pour remplacer certaines fonctionnalités de votre thème.

Les fonctionnalités que vous autorisez à remplacer sont à votre choix et vous n'avez pas besoin d'intégrer la possibilité de remplacer chaque fonction/fonctionnalité .

Une autre chose que vous pouvez faire pour rendre plus facile la création de thèmes enfants à partir de votre thème consiste à incorporer des actions/filtres spécifiques à un thème, le cas échéant.

En ce qui concerne votre OOP vs question de procédure: cela dépend vraiment du style personnel.

Pour créer un thème de style OOP, vous pouvez utiliser judicieusement les méthodes finales. C'est-à-dire que lorsqu'un style procédural ne devrait pas envelopper une fonction dans if (!function_exists(...)) {, alors vous feriez de cette méthode final, etc.

Modifier

La réponse à cette autre question WPSE fournit plus de contexte pour développer des thèmes de style OOP.