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 WordPress n’est pas com­pli­qué en soi. Il existe d’ex­cel­lents thèmes spé­cia­le­ment conçus pour cela, tels que unders­cores (_s).

Si vous créez pour vos propres besoins, vous allez pro­ba­ble­ment coder « en dur » chaque option du thème. Rapide, simple, performant.

Si par contre vous créez un thème pour le com­mer­cia­li­ser — il va fal­loir pas­ser par la ges­tion d’op­tions. Et si vous sou­hai­tez en pro­po­ser une ver­sion light dans le dépôt WordPress — qui vous donne une visi­bi­li­té accrue auprès de tous ceux qui cherchent un thème pour habiller leur site pro­pul­sé par WordPress, il fau­dra pas­ser par l’ou­til de per­son­na­li­sa­tion, aus­si appe­lé Customizer.

En effet, depuis octobre 2015, pour être inclus dans le dépôt WordPress, les thèmes doivent être exclu­si­ve­ment gérés via cette interface.

In a nut­shell: Themes are now requi­red to uti­lize the Customizer API if the theme has cus­tom theme set­tings. This means no cus­tom set­tings screens.


Justin Tadlock in Details on the new theme set­tings (cus­to­mi­zer) gui­de­line

Cette nor­ma­li­sa­tion a du bon pour l’u­ti­li­sa­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éateur.

Mais vous, vous allez avoir à pro­gram­mer cha­cune de vos options — ras­su­rez-vous, quelques unes sont nati­ve­ment incluses dans WordPress.

Certaines bou­tiques, dont Themify ont dépla­cé toute l’in­ter­face de ges­tion dans l’ou­til de per­son­na­li­sa­tion, preuve que tout est pos­sible, quand on le veut…

Si vous ne vou­lez pas vous plon­ger dans la docu­men­ta­tion tech­nique, il existe une alter­na­tive simple, pré­sen­tée sous forme d’ex­ten­sion : Kirki, et la créa­tion d’op­tions devient un jeu d’enfant.

Cerise sur le gâteau, Kirki pro­pose des contrôles inédits, plus puis­sants que les contrôles natifs de l’ou­til de personnalisation.

En prime, je vous explique ensuite com­ment aller plus loin, en uti­li­sant des feuilles de style LESS, en les com­pi­lant à la volée et en les met­tant en cache, pour gagner à la fois en sou­plesse et en performances.

Mais en pre­mier lieu, nous allons nous inté­res­ser à…

L’extension Kirki

Comment fonc­tionne cette exten­sion ? C’est tout sim­ple­ment une sur­couche au Customizer de WordPress, elle se charge de com­mu­ni­quer entre vos don­nées et les fonc­tions WordPress, grâce aux 30 contrôles actuel­le­ment  inclus dans Kirki.

Je vous le disais en intro­duc­tion, cer­tains contrôles sont plus avan­cés que la ver­sion pro­po­sée par le Customizer :

  • la ges­tion des cou­leurs ne se limite pas au RVB à codage hexa­dé­ci­mal, il est aus­si pos­sible de jouer sur la trans­pa­rence en uti­li­sant le mode RGBA .
  • il est pos­sible de gérer du code CSS, javas­cript, HTML… dans une zone uti­li­sant la colo­ra­tion syn­taxique et le for­ma­tage des don­nées introduites.
  • la ges­tion des polices de carac­tères pré­sentes dans Google Fonts per­met de choi­sir la police (avec les décli­nai­sons exis­tantes), la taille des carac­tères, la hau­teur de ligne, l’es­pa­ce­ment entre les carac­tères, et pour finir la couleur.

WordPress recom­mande de pas­ser par des filtres de net­toyage (sani­ti­za­tion) avant d’u­ti­li­ser le conte­nu d’une variable sai­sie par l’u­ti­li­sa­teur. Kirki gère la vali­da­tion des don­nées, chaque variable est véri­fiée avant d’être uti­li­sée ou enre­gis­trée.

En prime, une option dans la confi­gu­ra­tion de l’ex­ten­sion per­met de l’u­ti­li­ser en « marque blanche », en uti­li­sant son propre logo ou une image d’en-tête spécifique.

Installer et activer Kirki

L’extension peut être uti­li­sée telle quelle, ou être direc­te­ment inté­grée dans le thème — c’est le choix de betheme par exemple (créa­teurs de BeAgency et BeOnePage).

La pre­mière méthode per­met de mettre à jour l’ex­ten­sion indé­pen­dam­ment du thème, la deuxième est trans­pa­rente pour l’u­ti­li­sa­teur final, mais ce sera à vous de gérer la mise à jour en l’in­cluant dans la mise à jour du thème lui-même.

En tant qu’extension

Vous trou­ve­rez l’ex­ten­sion dans le dépôt WordPress ou en sai­sis­sant sim­ple­ment « kir­ki » depuis Extensions > Ajouter dans la console d’ad­mi­nis­tra­tion de WordPress. Installez et acti­vez — c’est ter­mi­né, l’ex­ten­sion est prête à être utilisée.

En incluant Kirki directement dans le thème

Téléchargez l’ex­ten­sion dans le dépôt WordPress, copiez son conte­nu à l’in­té­rieur du dos­sier de votre thème, dans un sous-dos­sier com­pre­nant toutes les librai­ries externes par exemple.

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

Maintenant que l’ex­ten­sion est opé­ra­tion­nelle, voyons comment…

Utiliser Kirki pour votre thème

Si vous uti­li­sez Kirki en tant qu’ex­ten­sion, il faut tout d’a­bord récu­pé­rer 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 uti­li­ser cette exten­sion en rajou­tant une ligne dans le fichier functions.php :

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

L’extension va détec­ter par elle même si elle a été inté­grée au thème ou si elle est uti­li­sée en tant qu’ex­ten­sion, et adap­ter son com­por­te­ment en fonc­tion de cela.

Vous trou­ve­rez de plus amples infor­ma­tions concer­nant l’in­té­gra­tion de l’ex­ten­sion sur la page Integrating Kirki.

Initialiser les contrôles

Il est pos­sible d’a­jou­ter le code néces­saire à la per­son­na­li­sa­tion dans le fichier functions.php — mais pour gar­der un code faci­le­ment main­te­nable, je vous recom­mande de créer un fichier dédié, que vous nom­me­rez functions_customizer.php  par exemple, à appe­ler en ajou­tant une deuxième ligne de code dans le fichier functions.php, juste en des­sous de la ligne précédente :

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

Dans le fichier style.css, vous avez défi­ni un slug pour votre thème ; nous allons l’u­ti­li­ser pour ini­tia­li­ser Kirki :

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

Vous remar­que­rez que l’on uti­lise theme_mod : les options sont sto­ckées dans un champ unique, on les récu­père une à une avec get_theme_mod( ‘option_name’ ) ou toutes en une seule fois via get_theme_mods(), ce qui réduit le nombre de requêtes SQL. C’est la méthode recom­man­dée par WordPress, et on gagne en performances.

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’option sera sto­ckée sous le nom « text_field_name », elle est de type « text », une valeur par défaut est défi­nie, ain­si qu’une éti­quette… en com­pa­rai­son, voi­ci le code cor­res­pon­dant, en uti­li­sant les fonc­tions natives de WordPress :

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 simple exemple, Kirki sim­pli­fie consi­dé­ra­ble­ment la créa­tion des options de votre thème.

Il ne reste main­te­nant qu’à…

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

Ce sont les fonc­tions WordPress qui sont mises à contri­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 Kirki, il fau­dra vous rendre sur la page offi­cielle de l’ex­ten­sion, sur Github. Tout y est expli­qué avec force détails, et vous trou­ve­rez des exemples pour chaque contrô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