URLRewriter
La façade URLRewriter permet de déclarer des rewrite rules WordPress avec une API fluide, puis de récupérer facilement les variables capturées dans l'URL.
Cas d'usage
Utilisez cette façade pour exposer des URLs lisibles (SEO-friendly) tout en conservant une logique de routage WordPress (index.php?...).
use Elementum\Facades\URLRewriter; URLRewriter::for('hebergements') ->type('pagename') ->segment('item_slug') ->segment('item_id', URLRewriter::INT) ->register();
Ensuite, vous pouvez récupérer les valeurs :
$slug = URLRewriter::get('item_slug'); $id = URLRewriter::get('item_id');
Méthodes
for(string $base): static
Point d'entrée de la chaîne fluide.
base: segment principal de l'URL (ex:hebergements).
type(string $type): static
Définit le type de query WordPress injecté dans la rule.
Exemples fréquents : pagename, post_type, category_name.
segment(string $name, string $regex = self::ANY): static
Ajoute un segment dynamique capturé dans l'URL.
name: nom de la query varregex: expression de capture (constantes disponibles ci-dessous)
captureBase(string $queryVar): static
Marque la base comme groupe capturant et mappe la valeur capturée vers une query var.
Utile quand la base est une alternance dynamique (ex : type1|type2|type3). La regex générée devient (base)/seg1/seg2 au lieu de base/seg1/seg2, et l'indice des segments est décalé automatiquement.
$types = 'prestations|hebergements|activites'; URLRewriter::for($types) ->captureBase('item_type') ->param('standalone', '1') ->segment('item_slug') ->segment('item_id', URLRewriter::INT) ->register();
param(string $key, string $value): static
Ajoute un paramètre fixe (non capturé) dans la chaîne de redirect.
->param('standalone', '1') // → index.php?standalone=1&...
priority(string $priority): static
Définit la priorité de la rewrite rule :
top(par défaut)bottom
register(): void
Enregistre la rewrite rule et les query vars associées.
get(string $name, mixed $default = null): mixed
Récupère la valeur d'une query var (get_query_var).
flush(): void
Exécute flush_rewrite_rules().
Constantes utiles
URLRewriter::ANY→[^/]+URLRewriter::SLUG→[a-zA-Z0-9-]+URLRewriter::INT→[0-9]+URLRewriter::ALPHA→[a-zA-Z]+
Recommandations
- Déclarez vos rules pendant l'initialisation WordPress (par ex. sur
init). - Évitez d'appeler
flush()à chaque requête (coûteux) : déclenchez-le lors de l'activation/mise à jour du plugin ou thème.