web-dev-qa-db-fra.com

Wordpress Rewrite

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

2
Austin Biggs

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' );
3
Milo

Je crois que c'est ce que vous recherchez:

RewriteRule ^/site/vendors/([^/]*)$ /site/vendors/?u=$1 [L]
1
David Kryzaniak