web-dev-qa-db-fra.com

Paramètre de requête pour la page en tant que normale WordPress "joli" permalien

J'ai une page qui est générée dynamiquement en fonction d'un paramètre de requête, que je souhaite "masquer" comme un "joli" permalien normal.

En ce moment j'utilise:

https://example.com/dynamic-page/?parameter=xxx

et je souhaite y parvenir:

https://example.com/dynamic-page/xxx/

Tout cela en utilisant la structure WP permalien suivante:

/blog/%postname%/

Donc, actuellement, c’est la WP de mon .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Le dynamic-page n'a pas d'enfants, il n'y a donc pas déjà de structure de permalien "en dessous". Tout cela sans toucher à la fonctionnalité de permalien standard de WP.

1
Hlsg

J'ai trouvé ce que je cherchais. Voici ce que j'utilise:

function add_query_vars($vars) {
    $vars[] = "parameter";
    return $vars;
}
add_filter('query_vars', 'add_query_vars');

Le code ci-dessus ajoute la variable de requête parameter à la liste que WP cherche.

function add_rewrite_rules($rules) {
    $newrules = array('dynamic-page/([^/]+)/?$' => 'index.php?pagename=dynamic-page&parameter=$matches[1]');
    $rules = $newrules + $rules;
    return $rules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

Ce qui précède effectue la réécriture de l'URL réelle, dans le contexte fourni par la question d'origine.

Plus d'informations peuvent être trouvées dans ce tutoriel:

http://www.rlmseo.com/blog/passing-get-query-string-parameters-in-wordpress-url/

0
Hlsg