Aller au contenu principal
Version: 26.0.9.0

Changelog

26.0.9.0

Nouveautés

  • Attribut #[Hook] : nouvel attribut PHP permettant à un contrôleur (thème enfant, plugin) de surcharger le template et les variables d'un composant ou d'un point d'extension Twig, sans modifier le code source du thème. Voir documentation #[Hook].

  • Fonction Twig hook() : nouvelle fonction permettant d'insérer des points d'extension dans les templates Twig. Retourne une chaîne vide si aucun contrôleur n'est attaché. Voir documentation hook().

  • Service twig.hook (Elementum\Services\Twig\Hook) : nouveau service interne qui orchestre le pipeline de hooks Twig. Génère automatiquement un filtre WordPress elm.<hookName> pour chaque composant rendu et chaque appel à hook().

    • register(name, template, args) — enregistre et applique les filtres
    • attach(name, template, callable) — lie un callback à un hook (utilisé par #[Hook])
    • formatName(string) — normalise les noms (/.)
    • get(name) / exist(name) — introspection
  • component() — support du hook : la fonction Twig component() passe désormais par le service Hook avant le rendu, ce qui permet de surcharger le template et les variables d'un composant via #[Hook] depuis un thème enfant ou un plugin.

  • component() — passage des args au callback : le callback enregistré sur un composant reçoit désormais les attributs passés à component('name', args) en paramètre.

  • Global Twig post : nouvelle variable globale automatiquement disponible dans les templates singuliers. Injectée via TwigGlobals::post(), c'est une instance de la façade Post. Disponible uniquement sur les templates single et singular.

  • Post::update() / Post::delete() : deux nouvelles méthodes sur la façade Post pour mettre à jour (wp_update_post) ou supprimer (wp_delete_post) le post courant.

  • ObjectHelper::toArray(object): array : nouvel utilitaire de conversion d'objet en tableau associatif.

  • Nouveaux helpers extraits de Utils :

    • Elementum\Helpers\WP — méthodes utilitaires WordPress (isCustomizePreview(), getActionsFired()).
    • Elementum\Helpers\Menu — logique de construction de l'arbre de menu (getMenuByLocation(), getMenuTreeByLocation()).
    • Elementum\Helpers\ArrayHelper — utilitaires tableaux/objets (toObject(), flatObject()).
    • Elementum\Helpers\ObjectHelper — utilitaires objets (flatObject(), toArray()).
  • AssetsController::localize() — sécurité : la propriété path (chemin serveur absolu) est désormais exclue de l'objet window.ELEMENTUM injecté en JavaScript pour main, theme et child.

  • Boilerplate colors.yaml : tous les champs sont passés de type: color à type: color_contrast avec leurs check_contrast_colors_ids respectifs et add_to_editor: true pour les couleurs de fond. Ajout du champ active: true au niveau du panneau.

Corrections

  • CLI new:child — boilerplate incomplet : la commande php dobby new:child générait un thème enfant sans composer.json, rendant l'autoload PSR-4 (Elementum\Child\) non fonctionnel. Le boilerplate child reçoit désormais .gitignore, composer.json, dobby, tsconfig.json et vite.config.js.

  • Templates — priorité automatique pour single : le template #[Template('single')] reçoit automatiquement une priorité de 100 pour laisser la possibilité aux CPT d'utiliser singular sans conflit.

  • AppareanceGetters / CustomizeController : tous les appels aux méthodes dépréciées de Utils remplacés par leurs équivalents dans ArrayHelper, ObjectHelper et WP.

Internes

  • ControllerResolver : ajout du scan et de l'enregistrement de l'attribut #[Hook] (registerHook()) dans la boucle de résolution des contrôleurs.
  • Suppression de assets/src/Hooks/mountCustomizeField.js, remplacé par mountReactComponent.js.