web-dev-qa-db-fra.com

add_rewrite_rule ne fonctionne pas pour moi

J'ai les balises de réécriture suivantes définies:

// ADD REWRITE TAG FOR 'VEHICLE MAKES'
add_rewrite_tag('%make%','([^&]+)');

// ADD REWRITE TAG FOR 'BODY STYLES'
add_rewrite_tag('%body-style%','([^&]+)');

// ADD REWRITE TAG FOR 'OTHER TOPICS'
add_rewrite_tag('%topic%','([^&]+)');

J'essaie de créer une réécriture personnalisée pour chacune de celles-ci pouvant s'appliquer à n'importe quelle page où les variables existent.

J'ai retravaillé l'exemple WP dans la documentation, sans succès. Cette réécriture est pour 'Vehicle Makes'.

Je souhaite que WP interprète ce qui suit:

http://example.com/make/abc

comme

http://example.com?make=abc

et le même modèle pour

http://example.com?body-style=abc & http://example.com?topic=abc

Je n'arrive pas à obtenir ce qui suit au travail, peu importe combien j'essaye

add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?page_id=12&food=$matches[1]&variety=$matches[2]','top');

Toute aide est appréciée!

1
Austin Biggs

Avez-vous essayé d'ajouter le troisième paramètre à cet appel?

add_rewrite_tag( '%make%', '([^/]+)', 'make=' );

2
Otto

La manière d'utiliser la fonction add_rewrite_rule est donnée ci-dessous:

  1. Accrochez cette fonction au crochet init
  2. Utilisez le filtre query_vars pour rendre la nouvelle réécriture disponible dans le query_vars

Voici l'extrait de code

add_action('init', 'my_custom_rewrite_rule');
function my_custom_rewrite_rule() {
    add_rewrite_rule( 'make/([^/]+)/?$', 'index.php?make=$matches[1]', 'top' );
}

add_filter('query_vars', 'my_rewrite_query_var');
function my_rewrite_query_var( $vars ) {
    $vars[] = 'make';
    return $vars;
}

Maintenant, allez à la page des paramètres de permalien, et cliquez sur Save Changes pour vider les règles de réécriture.

0
Saikat

Avant de poser une question, essayez de la découvrir vous-même. Dans le cas de wordpress, vous devriez d'abord regarder http://codex.wordpress.org/ .

La plupart des réponses sont déjà disponibles.

Le morceau de code que vous recherchez est une fonction flush_rewrite_rules () .

Ref: Règles de réécriture

0
Nishant Kumar