Pour développer un thème WordPress correctement et garantir le maximum de compatibilité avec le maximum d’extensions, il y a un certain nombre de principes à respecter, et de passages obligés.

Parmi ces contraintes, il y a l’obligation d’utiliser certaines fonctions indispensables. En effet, celle-ci sont critiques, car la plupart d’entre-elles exposent des hooks de WordPress essentiels. Si on n’utilise pas ces fonctions dans nos thèmes, une grande partie des extensions et même du coeur de WordPress risque de ne pas fonctionner correctement, voire pas du tout.

Voici donc quelques fonctions indispensables pour tout thème WordPress.

wp_head()

La fonction wp_head() ne fait pas grand chose seule. Elle expose simplement le hook du même nom. Mais ce hook est absolument indispensable !

Cette fonction est à placer dans la balise <head> du fichier header.php de votre thème, juste avant la balise fermante, et elle permet à toutes vos extensions et aussi à votre thème lui-même d’écrire dans cette balise <head>.

Par exemple, c’est sur ce hook que certaines extensions écrivent d’importantes métadonnées pour le référencement. Les balises <link> et <style> de vos styles sont aussi à écrire dans la balise <head>.

Harcoder une référence absolue à une feuille de style dans une balise <link> est un gros NO-NO. Carton rouge ! Simplement parce que WordPress n’en a pas connaissance. Donc pas possible de la déhooker si besoin, ou de s’y référer de quelque façon que ce soit.

Donc, pour faire ça correctement, on appelle wp_head() dans la balise <head> et on utilise les fonctions de WordPress wp_enqueue_script() et wp_enqueue_style() pour inscrire les balises <script> et <link> du thème. Pas de hardcoding. (J’en parle plus en détail dans l’article Charger la feuille de styles correctement)

wp_footer()

Celle-ci fonctionne de la même façon que wp_head(), sauf qu’elle se place dans le footer, juste avant la balise </body> fermante.

Indispensable elle aussi, elle expose le hook du même nom qui va permettre à vos extensions d’écrire les balises <script> nécessaires pour que leur magie opère. Sans ce hook, de nombreuses extensions risquent de ne pas fonctionner correctement !

Idem que pour wp_head(), écrire des balises <script> en dur dans vos templates mérite un carton rouge ! Plus généralement, on n’écrit pas de références absolue ou relative directement dans nos templates, mais on passe toujours par une fonction de WordPress.

wp_body_open()

Cette nouvelle fonction date de la version 5.2 de WordPress. Comme ses grandes soeurs, elle expose le hook du même nom, et c’est tout.

Cette fonction est à placer juste après la balise <body> ouvrante. Elle permet aux auteurs d’extensions d’ajouter des metadonnées et autres scripts avant le contenu de la page.

Si vous voulez que votre thème soit rétro-compatible avec les anciennes version de WordPress, il faudra ajouter un snippet dans votre fichier functions.php.

if ( ! function_exists( 'wp_body_open' ) ) {
    function wp_body_open() {
        do_action( 'wp_body_open' );
    }
}

Une autre solution consisterait à ajouter simplement la ligne 3 du snippet juste après la balise <body>, mais autant respecter le format attendu par WordPress et utiliser la fonction.

the_title() et the_content()

La première fonction affiche simplement le titre de votre publication, et la deuxième le contenu. Comme la plupart des fonctions affichant du contenu, la sortie de ces fonctions est filtrable et de nombreuses extensions utilisent ces filtres pour ajouter du contenu ou le traiter d’une façon ou d’une autre.

Par exemple, les extensions ajoutant des boutons de partage après le contenu utilisent souvent le filtre the_content, donc si vous accédez au contenu et l’affichez d’une autre façon, vous ne passerez pas par ce filtre, donc l’extension ne pourra afficher ses boutons.

post_class() & body_class()

Ces fonctions permettent à WordPress d’ajouter des classes très utiles à votre balise <body> et vos balises <article> de votre contenu. Par exemple, vos articles auront une classe selon leur format, leur catégorie, leur statut, leur identifiant, etc…

Encore une fois, la sortie de ces fonctions est filtrable et ces filtres sont utilisés par de nombreuses extensions. Il est donc fortement recommandé de les utiliser !

Voilà donc quelques fonctions indispensables pour que votre thème WordPress fonctionne correctement et permette aux utilisateurs de profiter au maximum de l’écosystème d’extensions.

Tous les exemples données ici sont ultra basiques et il y a beaucoup d’autres fonctions dont on n’a pas parlé, mais de manière générale, il y a (presque) toujours une fonction WordPress ou une API complète pour votre besoin. La règle est donc simple : s’il y a une fonction ou API WordPress qui fait le job, utilisez-la !

C’est souvent quand on fait les choses à sa sauce qu’on se heurte à des soucis de compatibilité. Mais aussi, parfois, le 100% personnalisé est nécessaire ! C’est la vie !

Si vous avez une question, n’hésitez pas à laisser un commentaire ! Merci !

@+

PS: Si vous avez aimé ce article et êtes intéressé pour apprendre à développer pour WordPress en utilisant les meilleures pratiques, jetez-un oeil à WPCookBook ! C’est un vrai livre de recettes WordPress pour apprendre à développer pour WordPress proprement et exploiter au maximum tous les outils et APIs mis à notre disposition. Inscrivez-vous pour être notifié de sa publication !