WordPress simple règle de réécriture ne fonctionne pas
Je suis en train de créer une règle de réécriture dans WordPress pour créer directe assez de liens dans les résultats de recherche.
Je travaille avec un custom post type appelé "objet"
Ma page de résultat se situe à cette adresse : http://www.domain.com/objects/
Je veux créer ce genre d'URL pour pointer une liste des nouveaux objets : http://www.domain.com/objects/new
Le réécrit requête doit être : http://www.domain.com/objects/?filter=new
Je vais donc être en mesure d'utiliser le $_GET['filtre'] valeur de requête mes objets (meta_query)...
mon problème
J'ai essayer de à ce avec ce code:
add_rewrite_tag('%filter%','([^&]+)');
add_rewrite_rule('objects/new/','objects/?filter=new','top');
.htaccess ressemble alors comme ceci:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^objects/new//objects/?filter=new [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Malheureusement, lorsque j'essaie d'atteindre l'URL http://www.domain.com/objects/new j'ai une erreur 404 🙁
Debug bar me montrer ceci:
Request:
objects/new
Query String:
attachment=new
Matched Rewrite Rule:
[^/]+/([^/]+)/?$
Matched Rewrite Query:
attachment=new
Quelqu'un peut me dire pourquoi WordPress essayer de récupérer une pièce jointe?
Est quelque chose de mal dans ma règle de réécriture ou ai-je raté quelque chose?
Merci d'avance pour votre aide!
- Quelques Questions 1. est-ce de travailler correctement - domain.com/objects 2. domain.com/objects/filter/new - que ce sera ok pour vous ?
- Salut Pramod, je ne comprends pas ce que tu veux dire avec ces questions? domain.com/objects une page WP, et domain.com/objects/filter/new n'est pas une bonne solution pour moi car je ne veux pas le "filtre" dans l'url finale (je veux domain.com/objects/new)
Vous devez vous connecter pour publier un commentaire.
OK,
J'ai enfin trouvé un moyen d'y parvenir.
Voici le code que j'ai ajouté à mon thème:
où 27 est le WordPress ID des "objets" à la page que je veux atteindre avec l'URL réécrite, et:
Afin de dire à WordPress j'ai besoin d'utiliser une requête personnalisée var appelé "filtre".
Cette dernière fonction doit être ajoutée sur init action:
Chose importante à savoir, dans mon modèle de page (celle avec 27 ID dans mon exemple), si je veux tester la requête var, il n'est pas possible de faire ce genre de test:
OBTENIR vars sont "cachés" en raison de WordPress redirection, vous devez alors:
index.php?pagename=some-page-name
sans la chance, en utilisantindex.php?page_id=123
tout est très bien.L'utilisation de ce plugin Réécrire plugin il va vous aider à analysize la règle de travail quand vous frappez l'url..vous pouvez créer une nouvelle règle de réécriture et pouvez vérifier ici même s'ils travaillent en conséquence ou pas.
Il n'y a pas besoin d'écrire quoi que ce soit dans wordpress parce que wordpress lui-même a une wp_rewrite classe qui gère toutes les règles de réécriture.
Essayer avec plusieurs règles de réécriture et de définir la priorité de la règle en conséquence. parce que la règle ou mentionnés ci-dessus dans la liste de match en premier si un match constaté ci-dessus, puis wordpress va ignorer les règles énumérées ci-dessous.
J'ai utilisé ce plugin et son travail pour moi la façon dont je le veux. Fixation de la capture d'écran ici
La règle de réécriture doit être placé aussi