web-dev-qa-db-fra.com

Pourquoi wordpress continue-t-il de supprimer ma requête?

J'essaie de passer une requête var à un modèle de page personnalisé avec de jolis permaliens.

Donc, fondamentalement, j'ai une page appelée "albums". Et je veux passer une requête var à cette page appelée "type". Donc, la version non-jolie serait mywebsite.com/index.php?p=97&type=vinyl

la "jolie" version serait le mywebsite.com/albums/vinyls

Et le modèle doit ensuite récupérer cette variable (par exemple, les vinyles)

J'ai beaucoup lu toute la journée, mais je n'arrive toujours pas à le faire fonctionner. J'espérais donc qu'une âme bienveillante m'aiderait.

Donc, premièrement, j'ajoute la réécriture à mon fichier functions.php:

function addrewrite() {
    add_rewrite_rule( '^albums/([^/]+)/?$',
    'index.php?p=97&type=$matches[1]',
    'top' );
}
add_action('init', 'addrewrite');

Cela semble fonctionner comme je peux le voir monter si on obtient un var_dump de toutes les réécritures.

Maintenant, si je fais un test et tapez mywebsite.com/albums/vinyl dans mon navigateur wordpress enlève le dernier bit "vinyle". J'ai lu quelques endroits que c'est parce que je dois enregistrer la requête var aussi. donc je l'ai fait avec le code suivant:

add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
  $public_query_vars[] = 'type';
  return $public_query_vars;
}

Puis j'ai vidé les permaliens en appuyant sur Enregistrer dans les paramètres -> permaliens , pourtant wordpress dépouille toujours mon URL.

Qu'est-ce que j'oublie ici?

3
Malibur

Pour une page, remplacez p=97 par page_id=97 ou pagename=albums. p est pour le type de poste post.

Je suggère également de changer votre requête var à quelque chose de plus unique.

2
Milo