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
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept