Skip to content

Simplifier le service Icon et corriger le nettoyage des slugs #525

Open

Description

@Rahe

Suite à la PR #524 (service Icon, collections pour le bloc core/icon) : le service est plus complexe que nécessaire et pose quelques problèmes. Les filtres (bff_icon_collections, bff_icon_label, bff_icon_properties, bff_unregister_core_icon_collection) sont à conserver.

1. function_exists en doublon

Les fonctions d'icônes WP sont testées à trois endroits (register_icon_collections, register_collection, register_icon_file). Un seul test dans boot() suffit : on n'enregistre pas les hooks si WP < 7.1.

2. Bug latent sur le slug

preg_replace( '/[^a-z0-9-]/', '', strtolower( $slug ) ) supprime les _ :

  • arrow_right.svg devient arrowright
  • Arrow-Right.svg devient arrow-right

Les noms sont déformés sans prévenir, et deux fichiers peuvent entrer en collision. Le cœur accepte pourtant [a-z0-9_-] (il refuse seulement les majuscules, cf. WP_Icons_Registry::register()). sanitize_title() suffit.

3. realpath + is_readable en doublon avec le cœur

WP_Icons_Registry::get_content() fait déjà realpath(), is_readable() puis file_get_contents() au moment de lire l'icône. Ici on le refait pour chaque fichier à chaque init, donc des accès disque en plus pour rien. Le dossier est déjà validé dans resolve_icons_directory() et les fichiers viennent de glob() : on peut passer le chemin tel quel à wp_register_icon().

4. glob() à chaque requête

Le glob() des deux dossiers tourne sur chaque requête, front compris (le bloc core/icon a besoin du registre au rendu). On pourrait mettre la liste des fichiers en cache (transient ou object cache) et le désactiver en mode développement pour voir les nouveaux SVG sans purge.

5. Collection vide

Si dist/images/<subdir> n'existe pas (assets non buildés), la collection est quand même enregistrée et apparaît vide dans le sélecteur. On pourrait ne l'enregistrer que s'il y a au moins une icône.

Activity

  1. francoistibo commented on Nov 3, 2026

    @francoistibo
    Contributor

    poke @firestar300 , rapport a ta PR sur les collections d'icones

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions