Yoan De Macedo [ Web & Minimalisme ]

Adopter une approche MVC pour un plugin WordPress

Le pattern MVC est très utilisé en développement web pour structurer proprement un projet et faciliter sa maintenance.

Lorsqu'on développe des plugins WordPress, il est donc tentant d'appliquer ce pattern ou plutôt de s'en approcher.

Je vais vous expliquer la méthode que j'utilise.

Dans le répertoire de mon plugin, je créé les sous-répertoires suivant :

J'ajoute aussi un répertoire qui contiendra mes classes métiers.

Dans le fichier principal du plugin imposé par WordPress, nomduplugin.php, j'appelle les constructeurs de mes vues et de mes controlleurs.

Par exemple :

    public function __construct(){
        /* Du code ici */

        /* Déclaration des vues et des controlleurs */
        new MonPlugin_view_xxx();
        new MonPlugin_view_yyy();

        new MonPlugin_controller_xxx();
        new MonPlugin_controller_yyy();

        /* Du code ici */
    }

Il est d'ailleurs possible d'ajouter une condition pour ne charger que les vues et les controlleurs adaptés à la page courante.

Dans les constructeurs de mes vues, je connecte les hook nécessaires.

    public function __construct(){
      add_filter('woocommerce_checkout_before_order_review', array($this,      
      'afterCheckoutReview'), 10, 1);
    }

Pareil pour les controlleurs.

    public function __construct(){
        add_action('woocommerce_save_product_variation', array($this, 'save_variation_settings_fields'), 10, 2);
    }

Bien sûr, cette astuce permet de s'approcher de la logique MVC. Je suis tout à fait conscient que ce n'est pas impeccable mais il faut s'intégrer dans la logique du fonctionnement de WordPress. Nous n'avons pas une liberté totale.

Cette architecture donne des plugins faciles à maintenir et lorsqu'on travaille sur un plugin qui commence à grossir, c'est bien plus agréable.

(Posté le 18-05-2018)

Les articles du blog | Qui suis-je ? | mail@yoandm.com

Je partage mes découvertes avec vous.
N'hésitez pas à vous abonner. Je déteste le SPAM, soyez tranquille.
Mentions légales | Propulsé par Grav