Comment changer la structure du lien permanent pour le type de publication personnalisé et ses taxonomies?
-
-
La solution quej'ai donnée dans la dernière question aurait dûfonctionner de cettefaçon,si vous l'avezmiseen œuvre correctement.La seule choseest que vousne pouvezpas obtenir lapartie htmlThe solution I gave in the last question should have worked that way, if you implemented it correctly. The only thing is you can't get the html part
- 1
- 2011-09-20
- Manny Fleurmond
-
Oui,maisil était verrouillé sur un chemin spécifique,donc uniquement catégorie/sous-catégorie/page alors qu'ilpourraitne pas y avoir de sous-catégories oumêmeplus.C'estplus dynamique.Yes but it was locked to a specific path, so only category/subcategory/page while there might not be subcategories or even more. This is more dynamic.
- 0
- 2011-09-20
- Mark
-
Ouje ne l'aipasmisen œuvre correctement;)Or I did not implement it properly ;)
- 0
- 2011-09-20
- Mark
-
3 réponses
- votes
-
- 2011-09-20
Ok,je pense quej'aipeut-être une solution.Jene saispas si c'est labonnefaçon d'accomplir cela,maispour l'instant,c'est la seule chose qui semblefonctionner.
add_filter('rewrite_rules_array', 'mmp_rewrite_rules'); function mmp_rewrite_rules($rules) { $newRules = array(); $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]'; $newRules['portfolio/(.+)/?$'] = 'index.php?project_category=$matches[1]'; return array_merge($newRules, $rules); } add_filter('request', 'mmp_rewrite_request'); function mmp_rewrite_request($vars) { if (isset($vars['project_category'])) { if (strpos($vars['project_category'], '/') !== false) { $categories = explode('/', $vars['project_category']); $vars['project_category'] = $categories[count($categories) - 1]; } } return $vars; }
Ok I think I might have a solution. I have no idea if this is the right way to accomplish this, but as for now it's the only thing that seems to work.
add_filter('rewrite_rules_array', 'mmp_rewrite_rules'); function mmp_rewrite_rules($rules) { $newRules = array(); $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]'; $newRules['portfolio/(.+)/?$'] = 'index.php?project_category=$matches[1]'; return array_merge($newRules, $rules); } add_filter('request', 'mmp_rewrite_request'); function mmp_rewrite_request($vars) { if (isset($vars['project_category'])) { if (strpos($vars['project_category'], '/') !== false) { $categories = explode('/', $vars['project_category']); $vars['project_category'] = $categories[count($categories) - 1]; } } return $vars; }
-
Lefiltre de demandeest unbonmoyen defiltrer sinous demandons une catégorie (termeen fait)et un article.Ilpermet d'ajouter une seule règle de réécritureet d'obtenir unepage depublication,que lapublication soit dans une catégorie,une sous-catégorie oupas dutout.The request filter is a good way to filter if we're asking a category (term in fact) and a post. It allows adding only one rewrite rule and get post page whether if post is in a category, a subcategory or not at all.
- 0
- 2018-10-30
- ZalemCitizen
-
- 2014-11-10
2méthodes différentes:
* Voir lesnotes aubas de cemessage.
parexemple,vous voulez avoir unetelle structure depermalien:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-postAu début ,vous devrezpeut-être définir les lienspermanents sur /% category%/%postname% . Alors ...
MÉTHODE 1:
créer des catégories STANDARD (
MAIN_CATEGORY
,SUB_CAT_1
,et etc.
),et enregistrer le CUSTOM POST,en incluant ceparamètre:'taxonomies'=> array ('catégorie' ..)
et utilisez ces codespour changer lespermaliens: https://wordpress.stackexchange.com/a/195643/33667
Ensuite,après lapublication d'un POST PERSONNALISÉ (s'ilestjoint sous une catégorie),l'URL sera:
example.com/MAIN_CATEGORY/SUB_CAT_1/mon-post
MÉTHODE 2:
(ps cetteméthode n'estpas conseillée si vousprévoyez depublier des centaines ou desmilliers d'articles)
enregistrez le POSTE PERSONNALISÉ (nommé
MAIN_CATEGORY
),en incluant cesparamètres:"prenden charge"=> array ('attributs depage' ...... "hierarchical"=> vrai,
ensuite,publiez des articlespersonnalisés comme celui-ci:
(c'est-à-direpublierplusieurs posts personnalisés,nommésSUB_CAT_2,SUB_CAT_1 ..
. Ensuite,lorsque vouspubliez un autrepost,mais choisissezSUB_CAT_2
en tant queparent.
p.s.
1) Si vous êtes débutant,vérifiez: Enregistrer un POST PERSONNALISÉ et Enregistrement de CUSTOM POST avec TAXONOMY
2) si vous avezbesoin d'unefonctionnalité de recherchepour les sous-niveaux,utilisez requête de recherchepersonnalisée2 Different Methods:
*See notes in the bottom of this post.
for example, you want to have such permalink structure:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-postAt first, you may need to set permalinks to /%category%/%postname%. Then...
METHOD 1:
create STANDARD categories (
MAIN_CATEGORY
,SUB_CAT_1
,and etc..
) , and register the CUSTOM POST, including this parameter:'taxonomies' => array('category'..)
and use this codes to change permalinks: https://wordpress.stackexchange.com/a/195643/33667
Then, after publishing a CUSTOM POST (if attached under a category), URL will be:example.com/MAIN_CATEGORY/SUB_CAT_1/my-post
METHOD 2:
(p.s. this method is not advised if you plan to publish hundreds or thousands of posts)
register the CUSTOM POST (named
MAIN_CATEGORY
), including these parameters:"supports" => array('page-attributes'...... "hierarchical" => true,
then, publish custom posts like this:
(i.e. publish several custom posts, namedSUB_CAT_2, SUB_CAT_1..
. After then, when you publish another post, but chooseSUB_CAT_2
as parent.
p.s.
1) If you are newbie, review: Register CUSTOM POST and Registering CUSTOM POST with TAXONOMY
2) if you will need search functionality for sub-levels, then use custom search query -
- 2016-04-07
Aprèsm'être cogné latêtependant des heures,j'aitrouvé ceplugintrès utile.
https://wordpress.org/plugins/custom-post-type-permaliens/
Voici la capture d'écran des optionsproposées.
After banging my head for hours, I found this plugin very helpful.
https://wordpress.org/plugins/custom-post-type-permalinks/
Below is the screen shot of options it gives.
Ceciest une republication d'une questionprécédente quej'avais,maisj'aimeentrer dansplus de détailsmaintenantpour êtreen mesure de résoudre complètement cela.
Encore unefois,avec lesmessages (normaux),changer le lienpermanentest aussi simple que d'aller dans Paramètres> Lienpermanentet de le changeren tout ce que vous aimez,comme le
%category%/%postname%.html
. Tout celafonctionne. Si seulement c'était aussi simplepour letype depublicationpersonnaliséet sestaxonomies.C'est donc ce quej'aime accomplir.
Ce quej'ai obtenujusqu'àprésentest le suivant:
custom_post_type
nommé projet et unetaxonomy
project_category .post_type = project
. Commentpuis-je ajouter .html aupermalien despages? Il renvoie désormais à http://mywordpress.com/portfolio alors queje veux http://mywordpress.com/portfolio.html . Cela devrait résoudre lepremierproblème.portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html
. Je suistoujours coincé à ce stade. Jepense queje devraisen quelque sorte ajouter la dernière catégorie au cheminet latransmettre le long de la project_category ,ce qui devrait conduire à unfichiertaxonomy.php oùje peux letraiter correctement.%postname%.html
à lafin de quelque chose.J'espère quemonproblèmeest clairet qu'il y a des développeurs courageux quim'aideront à résoudre ceproblème quim'a déjà occupépendant quatrejours PLEINS!