Créez vos options de thème avec Kirki

La gestion des options du thème rebute plus d'un créateur. Comment simplifier cette phase, et optimiser votre thème ? C'est le sujet de ce tutoriel.

Cet article prend 5 minutes à lire et comporte 1226 mots.

Créer un thème Word­Press n’est pas com­pliqué en soi. Il existe d’ex­cel­lents thèmes spé­ciale­ment conçus pour cela, tels que under­scores (_s).

Si vous créez pour vos pro­pres besoins, vous allez prob­a­ble­ment coder “en dur” chaque option du thème. Rapi­de, sim­ple, per­for­mant.

Si par con­tre vous créez un thème pour le com­mer­cialis­er — il va fal­loir pass­er par la ges­tion d’op­tions. Et si vous souhaitez en pro­pos­er une ver­sion light dans le dépôt Word­Press — qui vous donne une vis­i­bil­ité accrue auprès de tous ceux qui cherchent un thème pour habiller leur site propul­sé par Word­Press, il fau­dra pass­er par l’outil de per­son­nal­i­sa­tion, aus­si appelé Cus­tomiz­er.

En effet, depuis octo­bre 2015, pour être inclus dans le dépôt Word­Press, les thèmes doivent être exclu­sive­ment gérés via cette inter­face.

In a nut­shell: Themes are now required to uti­lize the Cus­tomiz­er API if the theme has cus­tom theme set­tings. This means no cus­tom set­tings screens.


Justin Tad­lock in Details on the new theme set­tings (cus­tomiz­er) guide­line

Cette nor­mal­i­sa­tion a du bon pour l’u­til­isa­teur : tous les thèmes sont gérés depuis une inter­face unique, native, exit les pages de réglages spé­ci­fiques à chaque créa­teur.

Mais vous, vous allez avoir à pro­gram­mer cha­cune de vos options — ras­surez-vous, quelques unes sont native­ment inclus­es dans Word­Press.

Cer­taines bou­tiques, dont Themi­fy ont déplacé toute l’in­ter­face de ges­tion dans l’outil de per­son­nal­i­sa­tion, preuve que tout est pos­si­ble, quand on le veut…

Si vous ne voulez pas vous plonger dans la doc­u­men­ta­tion tech­nique, il existe une alter­na­tive sim­ple, présen­tée sous forme d’ex­ten­sion : Kir­ki, et la créa­tion d’op­tions devient un jeu d’en­fant.

Cerise sur le gâteau, Kir­ki pro­pose des con­trôles inédits, plus puis­sants que les con­trôles nat­ifs de l’outil de per­son­nal­i­sa­tion.

En prime, je vous explique ensuite com­ment aller plus loin, en util­isant des feuilles de style LESS, en les com­pi­lant à la volée et en les met­tant en cache, pour gag­n­er à la fois en sou­p­lesse et en per­for­mances.

Mais en pre­mier lieu, nous allons nous intéress­er à…

L’extension Kirki

Com­ment fonc­tionne cette exten­sion ? C’est tout sim­ple­ment une sur­couche au Cus­tomiz­er de Word­Press, elle se charge de com­mu­ni­quer entre vos don­nées et les fonc­tions Word­Press, grâce aux 30 con­trôles actuelle­ment  inclus dans Kir­ki.

Je vous le dis­ais en intro­duc­tion, cer­tains con­trôles sont plus avancés que la ver­sion pro­posée par le Cus­tomiz­er :

  • la ges­tion des couleurs ne se lim­ite pas au RVB à codage hexa­déci­mal, il est aus­si pos­si­ble de jouer sur la trans­parence en util­isant le mode RGBA .
  • il est pos­si­ble de gér­er du code CSS, javascript, HTML… dans une zone util­isant la col­oration syn­tax­ique et le for­matage des don­nées intro­duites.
  • la ges­tion des polices de car­ac­tères présentes dans Google Fonts per­met de choisir la police (avec les décli­naisons exis­tantes), la taille des car­ac­tères, la hau­teur de ligne, l’e­space­ment entre les car­ac­tères, et pour finir la couleur.

Word­Press recom­mande de pass­er par des fil­tres de net­toy­age (san­i­ti­za­tion) avant d’u­tilis­er le con­tenu d’une vari­able saisie par l’u­til­isa­teur. Kir­ki gère la val­i­da­tion des don­nées, chaque vari­able est véri­fiée avant d’être util­isée ou enreg­istrée.

En prime, une option dans la con­fig­u­ra­tion de l’ex­ten­sion per­met de l’u­tilis­er en « mar­que blanche », en util­isant son pro­pre logo ou une image d’en-tête spé­ci­fique.

Installer et activer Kirki

L’ex­ten­sion peut être util­isée telle quelle, ou être directe­ment inté­grée dans le thème — c’est le choix de betheme par exem­ple (créa­teurs de BeAgency et BeOnePage).

La pre­mière méth­ode per­met de met­tre à jour l’ex­ten­sion indépen­dam­ment du thème, la deux­ième est trans­par­ente pour l’u­til­isa­teur final, mais ce sera à vous de gér­er la mise à jour en l’in­clu­ant dans la mise à jour du thème lui-même.

En tant qu’extension

Vous trou­verez l’ex­ten­sion dans le dépôt Word­Press ou en sai­sis­sant sim­ple­ment “kir­ki” depuis Exten­sions > Ajouter dans la con­sole d’ad­min­is­tra­tion de Word­Press. Installez et activez — c’est ter­miné, l’ex­ten­sion est prête à être util­isée.

En incluant Kirki directement dans le thème

Téléchargez l’ex­ten­sion dans le dépôt Word­Press, copiez son con­tenu à l’in­térieur du dossier de votre thème, dans un sous-dossier com­prenant toutes les librairies externes par exem­ple.

wp-content
_ plugins
_ themes
__ theme_directory
___ languages
___ css
___ js
___ includes
____ kirki

Main­tenant que l’ex­ten­sion est opéra­tionnelle, voyons com­ment…

Utiliser Kirki pour votre thème

Si vous utilisez Kir­ki en tant qu’ex­ten­sion, il faut tout d’abord récupér­er les fichiers néces­saires pour lier l’ex­ten­sion à votre thème, sur Github.

Il faut ensuite indi­quer à votre thème qu’il faut utilis­er cette exten­sion en rajoutant une ligne dans le fichi­er functions.php :

require_once get_template_directory() . '/inc/include-kirki.php';

L’ex­ten­sion va détecter par elle même si elle a été inté­grée au thème ou si elle est util­isée en tant qu’ex­ten­sion, et adapter son com­porte­ment en fonc­tion de cela.

Vous trou­verez de plus amples infor­ma­tions con­cer­nant l’in­té­gra­tion de l’ex­ten­sion sur la page Inte­grat­ing Kir­ki.

Ini­tialis­er les con­trôles

Il est pos­si­ble d’a­jouter le code néces­saire à la per­son­nal­i­sa­tion dans le fichi­er functions.php — mais pour garder un code facile­ment main­ten­able, je vous recom­mande de créer un fichi­er dédié, que vous nom­merez functions_customizer.php  par exem­ple, à appel­er en ajoutant une deux­ième ligne de code dans le fichi­er functions.php, juste en dessous de la ligne précé­dente :

require_once get_template_directory() . '/functions_customizer.php';

Dans le fichi­er style.css, vous avez défi­ni un slug pour votre thème ; nous allons l’u­tilis­er pour ini­tialis­er Kir­ki :

Kirki::add_config(
  'theme_slug',
  array(
    'capability' => 'edit_theme_options',
    'option_type' => 'theme_mod'
  )
);

Vous remar­querez que l’on utilise theme_mod : les options sont stock­ées dans un champ unique, on les récupère une à une avec get_theme_mod( ‘option_name’ ) ou toutes en une seule fois via get_theme_mods(), ce qui réduit le nom­bre de requêtes SQL. C’est la méth­ode recom­mandée par Word­Press, et on gagne en per­for­mances.

Nous allons à présent…

Créer une option

Nous allons créer un champ de texte :

Kirki::add_field(
  'theme_slug',
  array(
    'settings' => 'text_field_name',
    'label' => __( 'My Text Field', 'translation_domain' ),
    'section' => 'my_section',
    'type' => 'text',
    'priority' => 10,
    'default' => 'some default value for text field'
  )
);

L’op­tion sera stock­ée sous le nom “text_field_name”, elle est de type “text”, une valeur par défaut est définie, ain­si qu’une éti­quette… en com­para­i­son, voici le code cor­re­spon­dant, en util­isant les fonc­tions natives de Word­Press :

function my_custom_text_settings( $wp_customize ) {

    $wp_customize->add_setting( 'my_setting', array(
        'default'        => 'some default value for text field',
        'type'           => 'theme_mod',
        'capability'     => 'edit_theme_options',
    ) );

    // Add the controls
    $wp_customize->add_control( 'my_setting', array(
        'label'       => __( 'My Text Field', 'translation_domain' ),
        'section'     => 'my_section',
        'settings'    => 'my_setting',
        'type'        => 'text',
        'priority'    => 10
    ) );

}
add_action( 'customize_register', 'my_custom_text_settings' );

Vous le voyez à tra­vers ce sim­ple exem­ple, Kir­ki sim­pli­fie con­sid­érable­ment la créa­tion des options de votre thème.

Il ne reste main­tenant qu’à…

Récupérer l’option créée

Ce sont les fonc­tions Word­Press qui sont mis­es à con­tri­bu­tion, get_theme_mod() :

// une option
$value = get_theme_mod( 'text_field_name' );
// toutes les options
$value = get_theme_mods();

Aller plus loin

Pour tout savoir sur Kir­ki, il fau­dra vous ren­dre sur la page offi­cielle de l’ex­ten­sion, sur Github. Tout y est expliqué avec force détails, et vous trou­verez des exem­ples pour chaque con­trôle.

Retour en haut
Les cookies que nous utilisons sont indispensables au bon fonctionnement de ce site. Il n'y a aucun pistage publicitaire et les données statistiques recueillies sont anonymisées.
J'ai compris