WordPress est un CMS ou un Framework ? Ci-dessous sont les remarques à prendre en compte pour déterminer si WordPress peut être aussi considéré comme un FrameWork PHP.

A l’occasion de la journée international de blog survenu le 31 Août dernier, un atelier s’était tenu à Kinshasa avec comme thème, le blogging, un véritable métier dont je faisais parti des intervenants où j’ai eu à parler sur les avantages qu’offre WordPress pour la création de son blog (vous pouvez visualiser mon slide).

Dans mon discours, j’ai eu à traiter de WordPress  en quelque sorte comme étant un Framework PHP et puff, ça a fait débat.

Pourquoi j’ai traité WordPress comme étant un Framework PHP en quelque sorte ? Voici donc les raisons qui m’ont poussées à en arriver là.

Bien évidemment vous n’êtes pas obligé d’être pour ou contre ce que je veux argumenter.

Je veux devoir m’attarder d’abord à vous montrer quand est-ce que je considère WordPress comme un CMS et quand est-ce que je le considère comme un Framework et au final je vous dirai pourquoi je le considère comme un Framework PHP au même rangé que Symfony, Laravel, Codeigniter, etc…

Différence entre CMS et Framework

Mais avant tout, prenons un petit moment de faire la différence entre un CMS et Framework.

Un CMS et un Framework sont tous un ensemble de scripts/code prêt à servir, destiné à faciliter le travail. Le travail de qui ? C’est là où vient la différence.

Un Framework est fait pour faciliter le travail d’un développeur et un CMS est fait pour faciliter le travail de tout le monde avec ou sans connaissance sur les technologies web.

WordPress as CMS

Un CMS a pour objectif de faciliter la création et mise à jour d’un site web dynamique sans nécessairement avoir les compétences sur les technologies web requises.

Je considère WordPress comme un CMS dans différents angles.

Quand WordPress gère l’interface pour gérer les posts (articles, pages, menus, images etc…)

Quand vous n’avez pas besoin de savoir que les articles, les pages, les multimédias sont tous stockés dans une même table (wp_posts), c’est à ce moment que WordPress est un véritable CMS. En effet, WordPress as CMS fait abstraction de toutes les manips techniques en proposant une interface facile pour créer différents types de postes.

Editeur WordPress

Quand pour ajouter une fonctionnalité dans WordPress, il faut installer un plugin

Étendre WordPress se fait à l’aide des plugins. Vous voulez une nouvelle fonctionnalité tel que créer un réseau social, un site e-commerce ? En utilisant les plugins WordPress, vous vous servez de WordPress comme étant un CMS.

Donc, si vous ajoutez les fonctionnalités dans votre projet WordPress à l’aide des plugins, vous vous servez de WordPress comme étant un CMS.

Quand WordPress propose une interface pour configurer son site

Quand vous n’avez pas besoin de savoir que toutes les configurations WordPress telles que :

  • L’url du site
  • Les configurations des thèmes
  • Les configurations/paramètres des plugins

sont toutes stockées dans la table wp_options WordPress est donc simplement un CMS.

WordPress as Framework

Un Framework a pour objectif de simplifier le travail d’un développeur en lui offrant une architecture “prête à l’emploi” et qui lui permette de ne pas repartir de zéro à chaque nouveau projet.

S’il faut revenir sur les cas évoqués dans WordPress as CMS, je dirais que je considère WordPress comme un Framework dans ces cas suivants.

Quand WordPress gère les posts (CRUD)

Quand WordPress mets en place les fonctions prêtes à l’emploie permettant d’insérer ou modifier un post (wp_insert_post) , de lire les posts (get_post ou get_posts) ou de supprimer les posts (wp_delete_post), je n’arrive pas à le traiter de simple CMS car pour les développeurs, c’est un véritable cadre de travail.

Quand pour ajouter une fonctionnalité, il faut écouter un événement (hook)

Quand vous voulez utiliser WordPress comme un Framework, vous allez devoir écouter un événement qu’on appelle aussi hook pour ajouter une fonctionnalité particulière dans WordPress au lieu d’utiliser un plugin comme c’était le cas quand on se sert de WordPress comme un CMS. Ajouter l’emplacement d’un widget, ajouter un widget, tout se joue avec les hooks.

Quand WordPress propose des fonctions pour gérer les configurations

Laravel par exemple stocke conventionnellement toutes les configurations dans les fichiers qui se trouvent dans le dossier config et donne le helper config() pour les manipuler. WordPress les stocke conventionnellement dans la table wp_options et donne des fonctions pour les manipuler. (get_option, add_option, update_option).

WordPress, un framework, Pourquoi ?

Tout dépend dans quel contexte on est pour traiter WordPress comme étant un framework ou CMS et j’espère la partie précédente couvre ces différents cas. WordPress offre la plus part de fonctionnalités que les framework modernes comme Symfony, Laravel offre aussi entre-autre :

  • Routing à la sauce WordPress
  • ORM
  • Templates (Vues) : Qui se base sur le moteur de template par défaut fourni par PHP
  • L’authentification/l’autorisation : capability and authentication.
  • L’injection de dépendance : L’injection de dépendance à la sauce WordPress à l’aide de global
  • Les caches

Et WordPress gère plus que ce que les frameworks PHP connus ne gère pas par defaut.

  • Panneau d’administration
  • Les menus
  • Et plus…

Ce que beaucoup ignorent de WordPress

Si WordPress est un framework ? Pourquoi on en dit pas trop sur la toile ? Et ben c’est juste parce qu’il y a beaucoup de WordPress qu’on en dit pas trop ou carrément qu’on ignore.

Certains plugins WordPress sont des frameworks

Surprenant n’est-ce pas de l’attendre ? Comme j’avais dit, un framework n’est rien d’autre qu’un cadre de travail avec pour but, de simplifier la tâche d’un développeur en lui évitant d’effectuer les tâches répétitives récurrentes. Il existe des plugins qui jouent ce rôle. Je peux en citer quelques uns :

  • Redux : Permet de gérer facilement les options d’un thème
  • WPMVC : Permet au développeur WordPress de coder avec le style MVC.
  • Et il y en a pleins.

Et comme pour les plugins, certains thèmes WordPress sont des frameworks le cas du célèbre Genesis framework.

Je ne suis pas le seul à parler de WordPress comme Framework

C’est ce que j’ai eu à croire avant de faire un petit tour sur la toile pour voir ce que les autres ont eu à dire à propos de WordPress comme étant Framework et sans surprise, j’en ai trouvé plusieurs comme celui ci [EN] qui me semble plus intéressant ou [EN]

Sans Orienté Objet, jamais considéré comme Framework ?

Enfin, les frameworks modernes sont tous Orientés Objet, ce qui semble ne pas être complètement le cas pour WordPress. Les raisons sont simples : WordPress a eu à exister avant la programmation orienté objet en PHP.

Réécrire complètement WordPress en orienté Objet aurait rendu obsolète plusieurs plugins existants. Ce qui fait que tous le core de WordPress est orienté objet mais laissant le style procédural pour les raisons d’interopérabilité.

Par exemple, on voit bien l’existence de la classe WP_Post mais seulement, les actions restent externes, soit les fonctions telles que get_post, get_posts, wp_insert_post, etc. qui interagissent avec les attributs de la classe.

Conclusion

Enfin, notre vol à travers WordPress as framework vient de connaitre un crash. Heureusement que l’idée n’était pas d’arriver à destination — croire que WordPress peut être considéré comme Framework — mais plutôt de parcourir toute l’itinéraire enfin d’être capable de revenir tout seul à souhait.

C’était un voyage long je vous l’accorde mais pas spontané. Des commentaires, des suggestions ou que sais-je encore qui soit contributifs à ce post sont les bienvenus.

Catégorisé:

Étiqueté dans :