J'essaie d'obtenir http://example.com/site/vendors/?u=abc de réécrire en http://example.com/site/vendors/abc mais je ne peux pas pour la vie de moi savoir comment obtenir les réécritures d'URL au travail.
/ site/est le répertoire racine de mon WP installation/vendors/est une page
en supposant que u
est une variable de requête personnalisée, vous devez d'abord l'ajouter au tableau des vars de requête reconnus:
function wpa_query_vars( $query_vars ){
$query_vars[] = 'u';
return $query_vars;
}
add_filter('query_vars', 'wpa_query_vars');
Ajoutez ensuite une règle de réécriture interne qui accepte tout ce qui est ajouté à vendors
et le transmet en tant que u
query var:
function wpa_rewrite(){
add_rewrite_rule(
'vendors/([^/]+)/?$',
'index.php?pagename=vendors&u=$matches[1]',
'top'
);
}
add_action( 'init', 'wpa_rewrite' );
Assurez-vous de vider les règles de réécriture une fois pour que cette règle soit ajoutée, vous pouvez également le faire en visitant simplement la page d'administration Settings > Permalinks
.
Ensuite, dans le modèle, vous pouvez accéder à la valeur de u
via get_query_var()
:
$vendor = get_query_var( 'u' );
Je crois que c'est ce que vous recherchez:
RewriteRule ^/site/vendors/([^/]*)$ /site/vendors/?u=$1 [L]