Créer un thème complet – part 4

Dernière mise à jour le 5 avril 2018 par LMD

Le fichier functions.php

C’est un fichier très important, car il va contenir l’activation de toutes les fonctionnalités nécessaires à la bonne marche de votre site. Faites attention cependant car une erreur de code, même minime dans ce fichier met votre site à plat et plus rien ne fonctionne. Pas de panique cependant, il n’est pas très difficile de revenir dans ce cas à un fonctionnement normal.

Il faut donc être prudent et faire en sorte notamment qu’une fonction ne soit pas déclarée deux fois, et donc vérifier que ce n’est pas le cas, par un test PHP. Il faut également choisir des noms de fonction qui soient clairs et vraiment personnalisés. C’est particulièrement valable lorsqu’on utilise des thèmes enfants.

Les principales fonctions à activer sont l’activation des images à la une, la création des emplacements de menus, la déclaration des widgets et des sidebars, et bien d’autres, dans la mesure où cela affecte la modification de l’affichage du contenu (on ne parle pas ici de CSS, pas de la mise en forme du contenu donc, mais de sa nature). Inspirez-vous des fonctions présentes dans les thèmes par défaut de WordPress, car le code est généralement bien commenté.

Le fichier functions.php doit commencer par l’ouverture d’une balise PHP qu’il n’est pas nécessaire de refermer en fin de fichier :
<?phpLes noms de fonction qui vont suivre sont à votre convenance; ils ne sont pas obligatoires et il est possible de les changer.

 

Les images à la une (thumbnails)

Il est possible pour un article d’indiquer une image « vedette », c’est le thumbnail, ou image à la une. Cela se chisit lors de la rédaction d’un article.

Pour autoriser cela, ajouter au fichier functions.php le code suivant :
add_theme_support( 'post-thumbnails' );

Ce code est suffisant, bien qu’il soit souvent de mise ensuite de définir des tailles d’image utilisées en attribut de la fonction the_post_thumbnail(). Voir le codex sur ce point :
set_post_thumbnail_size() & add_image_size()

https://codex.wordpress.org/Function_Reference/add_theme_support
https://codex.wordpress.org/Function_Reference/set_post_thumbnail_size
https://developer.wordpress.org/reference/functions/add_image_size/

L’appel à la feuille de style

Si elle n’est pas appelée directement depuis le fichier header.php, ce que l’on voit de plus en plus dans les thèmes, il est possible de créer une fonction pour cela :
add_action('wp_enqueue_scripts', 'insert_css_in_head');
function insert_css_in_head() {
   wp_register_style('style', get_bloginfo( 'stylesheet_url' ), '', false, 'screen');
   wp_enqueue_style( 'style' );
 }

Paramétrage des extraits de posts

Lorsqu’on choisit sur la page index ou une page d’articles, d’afficher seulement un extrait (the_excerpt())et pas le contenu entier de l’article, le nombre de mots de l’extrait par défaut est de 50. De plus, l’extrait se termine par des points de suspension entre crochets […].

Il est possible de modifier ces paramètres. Pour la longueur de l’extrait, utilisez le code suivant en adaptant le nombre de mots :
function set_excerpt_length($length) {
     return 40;
}
add_filter('excerpt_length', 'set_excerpt_length');

Pour modifier les points de suspension « à suivre », utilisez la fonction ci-dessous qui renvoie du texte entouré d’un lien vers l’article complet, grâce à son identifiant :
function set_more( $more ) {
           return '... <br /><a href="'. get_permalink( get_the_ID() ) . '">Lire la suite...</a>';
}
add_filter('excerpt_more', 'set_more');

https://codex.wordpress.org/Function_Reference/get_post_permalink

Créer des emplacements de menu

Pour indiquer à quel endroit un menu peut être placé, il faut définir des emplacements dans le fichier functions.php et il apparaitra dans le Dashboard > Apparence > Menus.

La fonction register_nav_menu() permet de créer un menu simple. Il faudrait la répéter pour en créer plusieurs. La fonction avec un s à la fin register_nav_menus() sert à déclarer plusieurs emplacements de menu d’un seul coup. Il est cependant conseillé de vérifier que la fonction existe bien avant de l’utiliser, afin d’éviter toute erreur PHP. Le code pour déclarer deux menus est donc :
if (function_exists('register_nav_menus')) {
        register_nav_menus(
            array( 'principal' => 'Menu principal',
                   'secondaire' => 'Menu du pied de page' )
        );
}

Le tableau (array) qui contient les emplacements de menus, commence par l’identifiant du menu pour le code, puis par son nom explicite dans le Dashboard.

https://codex.wordpress.org/Function_Reference/register_nav_menu
https://codex.wordpress.org/Function_Reference/register_nav_menus

Déclarer des sidebars

Comme pour les menus, les sidebars doivent être déclarées dans le fichier functions.php avant de pouvoir être utilisées (dans le fichier index.php ou autre).

Pour déclarer une sidebar, on utilise la fonction register_sidebar() en indiquant dans un tableau (array) un certain nombre de paramètres, identifiant, nom visible dans le Dashboard > Apparence > Widgets, ainsi que des éléments HTML à insérer avant et après le widget et le titre. Voici un exemple de code :
register_sidebar(
    array(  'id'            => 'primary',
            'name'          => 'Sidebar Principale à droite',
            'description'   => 'Ajouter vos widgets ici pour la sidebar principale.',
            'before_widget' => '<div id="%1$s" class="widget %2$s">',
            'after_widget'  => '</div>',
            'before_title'  => '<h3 class="widget-title">',
            'after_title'   => '</h3>' )
);

https://codex.wordpress.org/Function_Reference/register_sidebar

Et bien d’autres choses

Il y a de nombreux sites qui génèrent le code nécessaire à certaines fonctions à intégrer au fichier functions.php. En voici quelques-uns, n’hésitez pas à aller y chercher des réponses à vos attentes :
http://www.wpfunction.me/
https://generatewp.com/
http://wp-snippets.com/

Par ailleurs, en plus du codex, indispensable, voici une ressource simple :

Quelques secrets du fichier functions.php

 

Conclusion

Nous nous arrêterons là, mais pour concevoir un thème complet, il reste encore du travail, notamment pour créer de nouveaux templates PHP, dont les plus importants sont les fichiers single.php et page.php pour l’affichage des articles seuls et des pages. Il reste également à créer des personnalisations supplémentaires, éventuellement d’utiliser des Custom Post Types (moyen souvent utilisé actuellement pour faire des portfolios), et bien d’autres choses selon vos besoins.

Si vous êtes arrivés jusque là, vous devriez pouvoir satisfaire votre curiosité par des recherches internet. Prenez alors soin de privilégier l’usage du codex ou de ressources récentes, afin d’éviter le code trop ancien et éventuellement obsolète et mal protégé. Rappelez-vous que les mises-à-jour sont garantes de sécurité.

Vous pourrez également beaucoup apprendre en téléchargeant des thèmes gratuits (de bonne qualité évidemment, voir article à ce sujet) et en décortiquant leur code.

 

 

 

Design collaboratif