Réécriture d'URL de type de message personnalisé?
2 réponses
- votes
-
- 2012-05-25
Lorsque vousenregistrez letype depublicationpersonnalisé,vous devez spécifier que la règle de réécriturene doitpas être ajoutée à la structure d'URLexistante.
Enbref,cela signifie que cette ligne dans votre appel
register_post_type
:'rewrite' => array('slug' => 'projects'),
devrait devenir ceci:
'rewrite' => array('slug' => 'projects','with_front' => false),
Pourplus d'informations,consultez l'argument
rewrite
de entrée codex surregister_post_type
edit: assurez-vous simplement qu'après lamise àjour du code,vous videz les règles de réécritureen visitant Paramètres> Permaliens.Sinon,vous verreztoujours les anciens liens.
When you register the custom post type, you have to specify that the rewrite rule shouldn't be prepended with the existing URL structure.
In short, this means that this line in your
register_post_type
call:'rewrite' => array('slug' => 'projects'),
should turn into this:
'rewrite' => array('slug' => 'projects','with_front' => false),
For more info, check out the
rewrite
argument from the codex entry onregister_post_type
edit: just make sure that, after updating the code, you flush the rewrite rules by visiting Settings > Permalinks. Otherwise you'll still see the old links.
-
brillantmerci!Justepour clarifier,tout ce quej'ai àfairepour les règles de vidageest d'aller sur lapage Paramètres-> Permalienset cliquez sur "Enregistrer lesmodifications",n'est-cepas?brilliant thank you! Just to clarify, all I need to do for flushing rules is to go to the Settings->Permalinks page and hit "Save Changes", correct?
- 0
- 2012-05-25
- Jake
-
Vousn'avezmêmepasbesoin d'enregistrer lesmodifications.Il suffit d'ouvrir lapage desparamètres Permaliens (c'est-à-dire si votrefichier .htaccessest accessibleen écriture. Sinon,appuyez sur Enregistrer lesmodificationset copiezmanuellement le code qu'il renvoie dans votre .htaccess)You don't even need to save changes. It's enough just to open the Permalinks settings page (that is, if your .htaccess file is writable. If not, press save changes and manually copy the code it returns in your .htaccess)
- 4
- 2012-05-25
- 0x61696f
-
Celane semblepasfonctionnerpourmoi.Lespublications demesprojets vonttoujours sur `example.com/projects/title-of-post`.J'ai aussi visité lapage Permaliens.Qu'est-ce quipeut causer cela?Iln'y apas de règles de réécriture dansmon `htaccess`.This doesn't seem to work for me. My projects posts are still going to `example.com/projects/title-of-post`. I visited the Permalinks page too. What could be causing this? There aren't any rewrite rules in my `htaccess`.
- 2
- 2015-01-25
- Desi
-
Wow,merci c'était lapartiemanquante!Visiter lapage despermaliensn'apasfonctionné,mais SAUVEGARDER simplement lesparamètres depermalien actuels afonctionné :)Wow, thanks that was the missing part! Visiting the permalinks page did not work, but just SAVING the current permalink settings worked :)
- 1
- 2019-02-28
- Alexander Taubenkorb
-
J'ai continué à changer les choses sans vider les règles de réécriture.Mercipour le conseil!I kept on changing things without flushing the rewrite rules. Thanks for the tip!
- 1
- 2019-11-14
- Tan-007
-
- 2012-05-25
J'aieu ceproblèmeil y a littéralement 3jours,puisje suistombé sur une série sur wp.tutsplus.com . J'ai échangémonpropre codepourmieux répondre à votre question,mais c'est ce quej'aifini avec après avoir suivi la série. N'oubliezpasnonplus que celan'apas ététesté.
// sets custom post type function my_custom_post_type() { register_post_type('Projects', array( 'label' => 'Projects','description' => '', 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'capability_type' => 'post', 'hierarchical' => false, 'publicly_queryable' => true, 'rewrite' => false, 'query_var' => true, 'has_archive' => true, 'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'), 'taxonomies' => array('category','post_tag'), // there are a lot more available arguments, but the above is plenty for now )); } add_action('init', 'my_custom_post_type'); // rewrites custom post type name global $wp_rewrite; $projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/'; $wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project="); $wp_rewrite->add_permastruct('projects', $projects_structure, false);
Théoriquement,vouspouvez échanger ce que vous voulez dans l'URL stockée dans la variable
$projects_structure
,ce quiestexactement ce quej'aifini par utiliser.Bonne chance,et commetoujours - assurez-vous de reveniret dites-nous comment cela afonctionné! :)
I had this problem literally 3 days ago, then I stumbled across a series over at wp.tutsplus.com. I swapped my own code out to accommodate your question better, but this is what I ended up with after following the series. Also, keep in mind that this is untested.
// sets custom post type function my_custom_post_type() { register_post_type('Projects', array( 'label' => 'Projects','description' => '', 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'capability_type' => 'post', 'hierarchical' => false, 'publicly_queryable' => true, 'rewrite' => false, 'query_var' => true, 'has_archive' => true, 'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'), 'taxonomies' => array('category','post_tag'), // there are a lot more available arguments, but the above is plenty for now )); } add_action('init', 'my_custom_post_type'); // rewrites custom post type name global $wp_rewrite; $projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/'; $wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project="); $wp_rewrite->add_permastruct('projects', $projects_structure, false);
Theoretically, you could swap out whatever you want in the URL stored in the
$projects_structure
variable, what is there is just what I ended up using.Good luck, and as always - make sure to come back and let us know how it worked out! :)
-
Les réponses uniquement composées de liens sontgénéralement considérées commeinutiles car ces ressourcespeuvent (et vontprobablement) cesser d'exister à l'avenir.Résumez le contenu.Answers that are just composed of links are generally considered unhelpful as those resources can (and probably will) cease to exist in the future. Summarize the content.
- 1
- 2012-05-25
- chrisguitarguy
-
Assezjuste,je vaistravailler sur une révision appropriée.Fair enough, I'll work on a proper revision.
- 0
- 2012-05-25
- cmegown
-
Là,ma réponse contientmaintenant un code similaire au code detravail quej'ai dans unenvironnement deproduction qui réécrit avec succès une URL detype depublicationpersonnalisée.J'espère que cela s'avèreplus utile!There, now my answer contains similar code to working code that I have in a production environment that successfully rewrites a custom post type URL. Hope it proves to be more helpful!
- 11
- 2012-05-25
- cmegown
J'ai configuré untype depublicationpersonnalisépourmesprojets deportfolio.L'URLprincipalepour cela setrouve à
/projects/
Maintenant,j'ai également configuré le lienpermanent demes articles deblog vers
/articles/*/
pour la structure du lienpermanent.Cela signifie que lorsqueje vais voir unprojet deportfolio,l'URL changeen/articles/projects/project-name/
Je sais qu'il doit y avoir unmoyen de réécrire lespermaliens uniquement pour letype depublicationpersonnalisé demesprojets.Maisje ne suispasfamilier avec la syntaxepour déclarer le slug d'URL -j'apprécieraistoute aide queje peux obtenir!