Aller au contenu principal
Version: Next

Changelog

26.0.9.6

Améliorations

  • Façade Taxonomy — champs personnalisés sur les termes : la classe Taxonomy intègre désormais le trait Fields, ce qui permet d'ajouter des champs Carbon Fields directement sur les termes d'une taxonomie via addContainerFields(), puis de les enregistrer avec la nouvelle méthode registerTaxonomyContainers(). Voir documentation.

  • Façade Taxonomyregister() fluent : la méthode register() retourne désormais $this, ce qui permet de chaîner des appels supplémentaires après l'enregistrement (ex. ->register()->addContainerFields(...)).

  • Trait FieldsregisterContainers() paramétrable : la méthode accepte désormais deux paramètres optionnels $type (défaut : "post_meta") et $where (défaut : "post_type"), rendant le trait réutilisable dans des contextes autres que les post types.

  • Trait Fields — nouvelle méthode registerTaxonomyContainers() : raccourci de registerContainers() préconfiguré pour les taxonomies (type: "term_meta", where: "term_taxonomy").

  • Fonction Twig fn() / function() — correction interne : la gestion des arguments est maintenant variadic (...$args) côté PHP, ce qui corrige le passage de multiples arguments scalaires. Le comportement visible en Twig reste inchangé.

26.0.9.3

Nouveautés

  • Tag Twig {% pagination %} : nouveau tag block qui expose les données de pagination (prev, next, links) dans son corps. Accepte une WP_Query. Permet un contrôle total du markup HTML. Voir documentation.

  • Fonction Twig paginate() : nouvelle fonction qui retourne le HTML natif de paginate_links() WordPress. Accepte une WP_Query optionnelle et des labels personnalisés pour les liens précédent/suivant. Voir documentation.

26.0.9.2

Corrections

  • Façade Postget_field() / get_fields() hors boucle : les deux méthodes utilisent maintenant automatiquement l'ID du post courant lorsqu'aucun $postId n'est passé en argument. Avant ce correctif, l'ID pouvait ne pas être résolu dans certains contextes (composants isolés, appels hors boucle), retournant false ou des données erronées.

26.0.9.1

Corrections

  • Global Twig post — injection conditionnelle : la variable globale post n'est désormais injectée dans le contexte Twig que sur les pages de type single. Auparavant, elle était initialisé pour les singular, ce qui inclus également les posts-type : page et attachment. Cela générait une erreur.

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.