Documentation

Introduction

Skouerr est un ensemble d’outils conçus pour améliorer l’expérience des développeurs lors de la création et du développement de thèmes WordPress.

Contexte

Skouerr a été créé suite à un constat au sein de l’agence R2. L’utilisation de nombreux outils différents entre les projets s’est avérée non optimale, ce qui a conduit à la nécessité de développer une solution unifiée.

Après plusieurs phases d’itération, Skouerr a vu le jour pour répondre de manière optimale aux besoins des agences de communication qui développent des thèmes sur mesure pour leurs clients.

Skouerr est issu du breton skouer, qui signifie modèle ou outil. Un nom bien trouvé pour une agence bretonne.

Skouerr repose sur trois outils principaux :

  • Interface en ligne de commande : Permet de gérer la création d’éléments.
  • Thème de démarrage : Comprend des fonctionnalités prévues pour améliorer l’expérience développeur.
  • Utilitaire JavaScript : Permet la compilation et le rafraîchissement en direct des assets.

Skouerr est un outil open-source développé par l’agence digitale R2.

Contribution

Pour contribuer au projet Skouerr, visitez notre page GitHub. Vous pouvez signaler des bugs, proposer des améliorations, ou soumettre des pull requests. Rejoignez notre communauté pour discuter et collaborer sur les outils. Chaque contribution, grande ou petite, est précieuse !

CLI :
https://github.com/skouerr/skouerr-cli

Scripts :
https://github.com/skouerr/skouerr-scripts

Thème :
https://github.com/skouerr/skouerr-theme

Les pull requests sont évidemment les bienvenues. Elles seront examinées par les développeurs qui maintiennent le dépôt de l’équipe R2.

Si vous détectez un bug, un problème ou une évolution potentielle, vous pouvez ouvrir une issue sur le projet GitHub correspondant.

Pour toute question, n’hésitez pas à contacter l’équipe à l’adresse suivante : support-skouerr@r2.fr.

RoadMap

  • Implémentation OpenAI : Une intégration avec OpenAI est prévue pour rédiger automatiquement la documentation du thème et des différents blocs.
  • Librairie de Blocs : Une librairie de blocs est également prévue pour faciliter le développement et la gestion des éléments du thème.

Getting Started

Setup roots/bedrock

La boilerplate roots/bedrock permet de gérer WordPress, ses plugins et thèmes comme des dépendances PHP via un fichier composer.json, tout en révisant l’architecture des dossiers.

Pour créer un projet Bedrock, utilisez la commande suivante :

composer create-project roots/bedrock

Une fois Bedrock installé, pour travailler avec Skouerr, vous devrez ajouter le mu-plugin skouerr-cli

composer require skouerr/skouerr-cli

Bravo 🥳 ! Vous avez installer la première pierre de skouerr !

Pour créer un thème, vous pouvez lancer cette commande :

Création d’un thème

wp skouerr make:theme

Le thème sera activé par défaut !

Création d’un block

Pour commencer a créer vos premiers blocks lancer cette commande :

wp skouerr make:block

Liste des commandes

Vous pouvez lister les commandes disponible

wp skouerr list

Scripts de compilation

Une fois votre premier bloc créé, vous pourrez compiler et recharger vos fichiers. Le thème Skouerr, par défaut, intègre Skouerr Script.

Assurez-vous d’avoir la dernière version en lançant la commande suivante dans le répertoire du thème :

npm install  
npm update

Une fois les dépendances JavaScript du thème mises à jour et installées, pour lancer l’outil, utilisez la commande suivante :

npm run watch 

Le script devrait lancer la compilation automatique et vous devriez voir apparaitre le statut de la compilation en bas a droite de votre écran

Setup traditionnal wordpress

Pour travailler avec un WordPress classique, procédez comme suit :

  1. Téléchargez le plugin depuis ce lien.

  2. Installez-le dans le dossier plugins ou mu-plugins.

  3. Suivez la documentation à partir de Création d’un thème dans Setup Bedrock

Theme

Le thème Skouerr est un thème Full Site Editing et repose donc sur les normes définies par WordPress.

Le style atomique des composants du thème doit être défini dans le fichier theme.json.

Loader

Pour gérer les blocs créés par la CLI, une classe Skouerr_Loader est définie dans inc/core/loader. Cette classe scanne les dossiers suivants pour charger dynamiquement les différents éléments :

  • blocks/{name}/{name}.block.json
  • templates/{name}.html
  • patterns/{name}.php

Render et Utilisation du Pattern MVC pour les Blocs

Pour définir une norme et améliorer la clarté du code, nous avons adopté le pattern MVC pour la gestion des blocs. De plus, Skouerr permet de gérer différents types de moteurs de template (PHP, Twig, React) de manière commune grâce à la classe Skouerr_Block .

Fonctions Principales

  • set_data

    $skouerr_block->set_data('<DATA_KEY>', '<DATA_VALUE>');

    Cette fonction permet d’envoyer une valeur au moteur de template.

    La valeur peut être de n’importe quel type.

  • the_data

    $skouerr_block->the_data('<DATA_KEY>');

    Cette fonction permet d’afficher des données lorsque le moteur de template est PHP.

  • render

    $skouerr_block->render('php|twig|react');

    Cette fonction permet de choisir le moteur de rendu (PHP, Twig, ou React).

Skouerr Mails

Skouerr améliore la gestion des mails en récupérant les valeurs définies dans le Full Site Editing. Il est possible de créer des templates personnalisés pour les mails en utilisant Twig.

[!IMPORTANT] Pour utiliser les mails, vous devez avoir installé et activé le plugin Easy WP SMTP.

Vous pouvez définir et revoir vos templates dans le dossier : /mails/

Vous avez la possibilité de tester les mails avec ces deux commandes :

Tester l’envoi des mails avec la template

wp skouerr-theme mail --test

Afficher les variables disponible dans twig dans un mail

wp skouerr-theme mail --dump

Par défaut, la template par défaut va être utiliser pour tous les mails envoyé par wordpress

Vous pouvez intéragir l’utilisation de ces mails avec ces filtres :

  • skouerr_mail_use_template (boolean)
  • skouerr_mail_template (string)

Custom blocks

Flexibilité et Extensions avec Skouerr

Une des forces de Skouerr est de permettre aux développeurs WordPress de répondre aux besoins spécifiques de leurs clients que les blocs Gutenberg de base ne peuvent pas satisfaire.

Nous avons donc choisi de continuer à utiliser le plugin ACF (Advanced Custom Fields), tout en conservant les fonctionnalités natives de Gutenberg.

Pour créer des blocs avec Advanced Custom Fields, il est recommandé de souscrire à la licence ACF Pro.

Nous mettons à disposition des blocs prêts à développer sous plusieurs formats :

  • Native – PHP
  • Native – Twig
  • ACF – PHP
  • ACF – Twig

Les blocs ne contiendront pas les mêmes fichiers, car un bloc ACF sera automatiquement enregistré par le plugin, tandis qu’un bloc natif doit charger le fichier register.js.

Les blocs ACF gèrent directement leurs champs personnalisés dans le dossier /acf-json/.

Ces blocs doivent être conçus de manière réutilisable entre les projets. Il est donc fortement recommandé de construire le style des blocs personnalisés à partir des variables CSS, ainsi que d’utiliser les classes communes de WordPress.

Création de Blocs avec la CLI

La création d’un bloc avec la CLI nécessite plusieurs paramètres :

  • Type (ACF ou Native)
  • Template (PHP ou Twig)
  • Title
  • Name
  • Dashicon

Les paramètres vous seront demandés tout au long du processus :

wp skouerr make:block

Full Site Editing

Skouerr est un thème créé pour être entièrement compatible avec le Full Site Editing (FSE) de WordPress.

Ainsi, les compositions et templates seront gérés via l’éditeur de site. Par défaut, les compositions et templates sont enregistrés dans la base de données, ce qui signifie que les modifications ne sont pas versionnées.

Avec Skouerr, il est possible de synchroniser les templates et compositions grâce à la CLI. Pour ce faire, lancez la commande suivante et choisissez l’élément à versionner :

wp skouerr sync:template
wp skouerr sync:patterns

CLI

Skouerr repose sur trois outils, dont une interface en ligne de commande. Cette ligne de commande permet de créer, gérer et manipuler votre thème WordPress.

Par défaut, nous utilisons WP CLI, mais nous y avons ajouté une couche supplémentaire avec Symfony Console pour améliorer l’interaction avec le développeur.

Voici la liste des commandes disponibles :

Liste des commandes

wp skouerr list 

Création d’un thème

wp skouerr make:theme

Création d’un bloc

wp skouerr make:block  

Liste des blocks

wp skouerr list:blocks  

Import d’un block distant

wp skouerr import:blocks  

Création d’un post-type

wp skouerr make:post-type  

Enregistrement local d’un template

wp skouerr save:template  

Création d’un fichier de template

wp skouerr make:template  

Enregistrement local d’une compositions

wp skouerr save:pattern

Création d’une variation

wp skouerr make:variation

Scripts javascript

Un package npm permet à Skouerr de faire fonctionner un module de rechargement automatique.

Pour l’ajouter à votre projet, utilisez la commande suivante :

npm install skouerr-scripts

Ensuite, vous pouvez l’utiliser comme une CLI en ajoutant son exécution dans votre fichier package.json. Voici les commandes disponibles :

skouerr-scripts watch 
skouerr-scripts build

Hooks

Actions

skouerr_block_before_render($name,$type,$data)

Paramètres : name : Nom du block type : Type du block (php|twig|react) data : Données du block

Description : Cette action est déclenchée avant le rendu de tous les blocks.

skouerr_block_before_render_{{name}}($type,$data)

Prototype : {{name}} : Nom du block

Paramètres : string $type : Type du block (php|twig|react) array $data : Données du block

Description : Cette action est déclenchée avant le rendu du block nommé {{name}}.

skouerr_block_after_render($name,$type,$data)

Paramètres : name : Nom du block type : Type du block (php|twig|react) data : Données du block

Description : Cette action est déclenchée après le rendu de tous les blocks.

skouerr_block_after_render_{{name}}($type,$data)

Prototype : {{name}} : Nom du block

Paramètres : string $type : Type du block (php|twig|react) array $data : Données du block

Description : Cette action est déclenchée après le rendu du block nommé {{name}}.

skouerr_theme_setup_before()

Description : Cette action est déclenchée avant le setup du thème (lors de l’exécution de la commande wp skouerr-theme setup).

skouerr_theme_setup_after()

Description : Cette action est déclenchée après le setup du thème (lors de l’exécution de la commande wp skouerr-theme setup).

Filtres

skouerr_after_sanitize_file_name($filename)

Paramètres : string $filename : Nom du fichier

Description : Ce filtre est déclenché après la sanitization du nom du fichier, ce qui vous permet de renommer le fichier comme bon vous semble.

skouerr_block_get_data($data,$name,$key)

Paramètres : string $data : Donnée du block string $name : Nom du block string $key : Clé de la donnée

Description : Ce filtre est déclenché lors de la récupération des données d’un block, ce qui vous permet de manipuler les données avant de les retourner.

skouerr_block_get_data_{{name}}($data,$key)

Prototype : {{name}} : Nom du block

Paramètres : string $data : Donnée du block string $key : Clé de la donnée

Description : Ce filtre est déclenché lors de la récupération des données du block nommé {{name}}, ce qui vous permet de manipuler les données avant de les retourner.

skouerr_scripts_widget_display(true)

Paramètres : boolean $display : Affichage du widget

Description : Ce filtre est déclenché lors de la définition du paramètre d’affichage du widget, ce qui vous permet de contrôler l’affichage du widget ou non.

skouerr_scripts_widget_settings($settings)

Paramètres : array $settings : Les paramètres du widget

Description : Ce filtre est déclenché lors de la définition des paramètres du widget, ce qui vous permet de contrôler les paramètres appliqués au widget.

skouerr_scripts_widget_server_infos($server_infos)

Paramètres : array $server_infos : Les informations du serveur

Description : Ce filtre est déclenché lors de la définition des informations du serveur, ce qui vous permet de contrôler les informations du serveur qui seront affichées.

skouerr_scripts_widget_page_infos($page_infos)

Paramètres : array $page_infos : Les informations de la page

Description : Ce filtre est déclenché lors de la définition des informations de la page, ce qui vous permet de contrôler les informations sur la page.

skouerr_scripts_widget_active(true|false)

Paramètres : boolean : true si l’environnement est en mode développement, false sinon

Description : Ce filtre est déclenché lors de la définition de l’activation du widget, ce qui vous permet de contrôler l’activation du widget.

skouerr_mail_template(string)

Paramètres : string : Nom de la template

Description : Ce filtre est déclenché lors de la récupération du nom de la template, ce qui vous permet de contrôller les templates utilisées.

skouerr_mail_use_template(boolean)

Paramètres : boolean : true si l’utilisation de la template est activée, false sinon

Description : Ce filtre est déclenché lors de la récupération de l’utilisation de la template, ce qui vous permet de contrôller l’utilisation des templates.