Permaliens: type de message personnalisé -> taxonomie personnalisée -> message
-
-
juste vousindiquer quelque chose queje devaisfaire avant .. http://wordpress.stackexchange.com/questions/102246/wordpress-returns-404-on-custom-rewrite-rule-conflict-in-parametersjust pointing you to something i had to do before.. http://wordpress.stackexchange.com/questions/102246/wordpress-returns-404-on-custom-rewrite-rule-conflict-in-parameters
- 1
- 2013-08-01
- reikyoushin
-
1 réponses
- votes
-
- 2013-08-01
Tout d'abord,enregistrez votretaxonomie et définissez l'argument
slug
derewrite
àshows
:register_taxonomy( 'show_category', 'show', array( 'rewrite' => array( 'slug' => 'shows', 'with_front' => false ), // your other args... ) );
Ensuite,enregistrez votretype depublication et définissez le slug sur
shows/%show_category%
,et définissez l'argumenthas_archive
surshows
:register_post_type( 'show', array( 'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ), 'has_archive' => 'shows', // your other args... ) );
Enfin,ajoutez unfiltre à
post_type_link
pour remplacer la catégorie d'émission dans lespermaliens d'expositionindividuels:function wpa_show_permalinks( $post_link, $post ){ if ( is_object( $post ) && $post->post_type == 'show' ){ $terms = wp_get_object_terms( $post->ID, 'show_category' ); if( $terms ){ return str_replace( '%show_category%' , $terms[0]->slug , $post_link ); } } return $post_link; } add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );
Vous avez oublié l'argument
has_archive
deregister_post_type
ci-dessus,qui devrait être défini surshows
.First, register your taxonomy and set the
slug
argument ofrewrite
toshows
:register_taxonomy( 'show_category', 'show', array( 'rewrite' => array( 'slug' => 'shows', 'with_front' => false ), // your other args... ) );
Next, register your post type and set the slug to
shows/%show_category%
, and sethas_archive
argument toshows
:register_post_type( 'show', array( 'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ), 'has_archive' => 'shows', // your other args... ) );
Last, add a filter to
post_type_link
to substitute the show category in individual show permalinks:function wpa_show_permalinks( $post_link, $post ){ if ( is_object( $post ) && $post->post_type == 'show' ){ $terms = wp_get_object_terms( $post->ID, 'show_category' ); if( $terms ){ return str_replace( '%show_category%' , $terms[0]->slug , $post_link ); } } return $post_link; } add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );
EDIT
Forgot the
has_archive
argument ofregister_post_type
above, that should be set toshows
.-
Milo,merci!Lefiltrepost_type_link était lapiècemanquantepourmoi.Quiconque lit cefil avec lemêmeproblème,la seule chose ànoterest qu'il y a unepetite erreur sur lafonction wpa_show_permalinks,où $post->post_type=='show' devraiten fait être 'shows'.Merciencore Milo!Milo, thank you! The post_type_link filter was the missing piece for me. Anyone reading this thread with the same problem, the only thing of note is there is a small mistake on the wpa_show_permalinks function, where $post->post_type == 'show' should actually be 'shows'. Thanks again Milo!
- 1
- 2013-08-02
- Paul T
-
Merci,Milo!Cela a résolumonproblème.J'essayais de réaliser quelque chose de similaireen utilisant [ceplugin] (https://wordpress.org/plugins/custom-post-type-permalinks/)et les URL réécrites recevaient 404. Je suppose que lefairemanuellement était labonnefaçon.Thanks, Milo! That solved my problem. I was trying to achieve something similar using the [this plugin](https://wordpress.org/plugins/custom-post-type-permalinks/) and the rewritten URLs were getting 404. I guess manually doing it was the right way.
- 0
- 2015-08-02
- Martin Sotirov
-
@milo,venant de http://wordpress.stackexchange.com/questions/199456/custom-taxonomy-post-slug-permalink,je continue d'atterrir sur un `404` avec cette approche.Ma structure depermalienest `% category%/%postname%`@milo, coming over from http://wordpress.stackexchange.com/questions/199456/custom-taxonomy-post-slug-permalink, I keep landing on a `404` with this approach. My permalink structure is `%category%/%postname%`
- 1
- 2015-08-23
- Atticus
-
Si vous apportez unemodification à uneinstance WordPressexistante,assurez-vous d'aller dans Paramètres> Permalienset cliquez sur Enregistrer.Lesmodifications que vous avez apportées àfunctions.phpne prendronteffet que lorsque vous leferez.If you're making a change to an existing WordPress instance, make sure you go to Settings > Permalinks and click save. The changes you've made in functions.php won't take effect until you do.
- 4
- 2016-01-05
- Jay Neely
-
Cela apresquefonctionnépourmoi dans lamesure où lataxonomie s'affiche sur lapage detype depublication,le/post_type/taxonomy/est unepage légitime (précédemment 404)maismon/post_type/taxonomy/postest 404.J'ai remarqué lors de l'enregistrement de lataxonomie ci-dessus que "show_category"et "show" étaientenregistrés,même si seule la show_categoryest lataxonomie.J'enregistre uniquement lataxonomie.This almost worked for me in that the taxonomy displays on the post type page, the /post_type/taxonomy/ is a legitimate page (previously 404) but my /post_type/taxonomy/post is 404'ing. I noticed when registering the taxonomy above both "show_category", "show" were being registered, even though only the show_category is the taxonomy. I'm only registering the taxonomy.
- 3
- 2016-09-28
- justinavery
-
@Milon'importe quelmoyenpour que celafonctionne avec une sous-taxe comme montre/taxe/sous-taxe/poste?@Milo any way to get this to work with sub sub tax like shows/tax/subtax/post ?
- 4
- 2017-01-26
- Benn
-
Je serais égalementintéressé de savoir commentfairefonctionner cela avec desenfants detaxonomie comme `/shows/tax/subtax/postname`I too would be interested in knowing how to get this to work with taxonomy children like `/shows/tax/subtax/postname`
- 0
- 2017-02-22
- Solomon Closson
-
C'est unetechnique vraimentprécieuse,merci.Il y a quandmême unpetit problème:en utilisant le 'post_type_link',leboutonmodifier/éditer sur la vue d'édition des articles de l'administrateur disparaîtra.Cela signifie que le slug dumessagene serapasmodifiable,et donc,ce slug sera corrigéet si vous changez lepost_titleplustard,vousne pourrezpas le refléter sur le slug.This is a really valuable technique, thank you. There's a little problem anyway: by using the 'post_type_link', the modify/edit button on admin's post edit view, will disappear. Meaning that the post's slug won't be editable, and so, that slug will be fixed and if you'll change the post_title later, you won't be able to mirror it on the slug.
- 0
- 2017-08-04
- Luca Reghellin
-
Comment (eninterne) 'shows/% show_category%' se résout-il automatiquement à labonnetaxonomie/terme?Je suisjuste curieux.Les documents officiels de register_post_typen'expliquentpas,ne vous donnent aucuneinformationet laissent croire quenousne pouvonspasser que des chaînes régulières au lieu depermastructures complètes. Deplus,je netrouve aucun document sur lagénération automatique debalises depermastructure lors de la création de lataxonomie.How (internally) does 'shows/%show_category%' automatically resolve to the right taxonomy/term? I'm just curious. Official register_post_type docs do not explain, nor give you any information and instead let believe we only can pass regular strings instead of full permastructures. Also, I can't find any doc about auto-generating permastructure tags upon taxonomy creation.
- 0
- 2017-08-04
- Luca Reghellin
-
@Stratboy Je vais devoiressayer ànouveau,je neme souvienspas que lepost slugne soitpasmodifiable dans ce cas.Je sais qu'avec des structuresplus complexes,j'ai dû utiliser `add_permastruct` à laplace.WPne fait rien avec `% show_category%` dans ce cas,c'estjuste unespace réservé que vous devez vous remplacer dans lefiltre `post_type_link`.Ilpeuten fait s'agir den'importe quellebalise de réécriture valide,parexemple si vous souhaitez utiliser un champpersonnalisé ou autre chose dans l'URL.@Stratboy I'll have to try it again, I don't recall the post slug not being editable in this case. I know with more complex structures I've had to use `add_permastruct` instead. WP doesn't do anything with `%show_category%` in this case, it's just a placeholder that you have to replace yourself in the `post_type_link` filter. This can actually be any valid rewrite tag, for example if you want to use a custom field or something else in the URL.
- 0
- 2017-08-04
- Milo
-
Enfait,si vousjetez un œil à $ wp_rewritejuste après avoirenregistré lestypes depublicationmais avant lefiltre `post_type_link`,vous remarquerez que labalise% show_category% a étégénérée,ainsi que lespermastructures associées.Donc c'est étrange,ilsexistent,doncils sont reconnusmaisprobablement wordpressne saitpas comment lestraiter.In fact, if you take a look to $wp_rewrite right after registering the post types but before the `post_type_link` filter, you'll notice that the %show_category% tag has been generated, as well as the related permastructures. So it's strange, they exist, so they get recognized but probably wordpress doesn't know how to treat them.
- 0
- 2017-08-04
- Luca Reghellin
-
@stratboy show_category doit être unebalise de réécriture valide,ce quiest le cas,carelle a été ajoutée dans le cadre de l'enregistrement de lataxonomie,maisellepeut également être simplement ajoutée via add_rewrite_tag.Ilfait lamême chose dans les coulisses.@stratboy show_category has to be a valid rewrite tag, which it is, because that was added as part of registering the taxonomy, but it can also just be one added via add_rewrite_tag. It's doing the same thing behind the scenes.
- 0
- 2017-08-04
- Milo
-
Que sepasse-t-il lorsque vous avezbesoin de slug différent dans différentes langues?(WPMLparexemple).Et lorsque certains articlesn'ontpas de catégorie définie,auront-ilstoujoursjuste/shows/post-name?À votre santé!What happens when you need slug different in various languages? (WPML for instance). And when certain posts don't have a category set, will they still have just /shows/post-name ? Cheers!
- 1
- 2018-12-05
- trainoasis
-
Dans le cas de WPML,celafonctionnepour la languepar défautmaismalheureusementpas dans les autresIn WPML case this works for default language but unfortunately not in others
- 0
- 2019-02-27
- Ivan Topić
-
J'auraistellement souhaité que celafonctionnepourmoi aussi,mais chaque singulier seterminepar un 404 ....I so wished this would work for me as well but every singular ends in a 404....
- 4
- 2019-03-02
- Beee
-
Celane fait quegénérer des 404pourmoi aussi,malheureusement ...même après avoir rafraîchi lespermaliens.This is just resulting in 404s for me too, unfortunately... even after refreshing permalinks.
- 0
- 2019-11-05
- Wilson Biggs
-
WordPress 5.2.4et WordPress 5.3 ont également abouti à des 404pour cette solution.J'aipublié une question sur leforum WP Support demandant si quelqu'un d'autrepourrait avoir des connaissances sur ce qui a changé dans les réécritures au cours des dernières annéeset qui auraitpubriser cette capacité. J'utilise unpluginpourgérer la structure despermaliensmaintenantet il semble que leplugineffectue une analyse de wp_querypour que lespermaliensfonctionnent correctement.WordPress 5.2.4 & WordPress 5.3 resulted in 404's for this solution as well. I've posted a WP Support forum question asking if anyone else might have some knowledge in what changed in rewrites in the last few years that might have broken this ability. I'm using a plugin to manage the permalink structure now and it seems that the plugin is doing some wp_query parsing to make the permalinks work correctly.
- 0
- 2019-11-13
- Rebecca Dessonville
-
J'aieu lemêmeproblème 404 sur lespages depublication de spectaclesindividuelles que commentépar d'autres utilisateurs,maisj'aipu le contourneren ajoutant `add_rewrite_rule ('shows/([^/] +)/([^/] +)','index.php? show=$ correspond à [2] ','top '); `àmesfonctions.Cela correspondra à la deuxièmepartie du slug après «show» avec unnom depublication.I had the same 404 issue on individual show post pages as commented by other users, but was able to work around it by adding `add_rewrite_rule( 'shows/([^/]+)/([^/]+)', 'index.php?show =$matches[2]', 'top' );` to my functions. This will match the second slug portion after 'show' to a show post name.
- 2
- 2020-01-08
- Sarah
-
La solution de Milofonctionnepresque.Malheureusement,letype depublicationestperduet lemodèlepar défautest utilisé à laplace du CPT.Milo's solution almost works. Unfortunately the post type is lost and the default template is used instead of the CPT.
- 0
- 2020-05-12
- bitkorn
-
Cela apresquefonctionnépourmoi - lapageprincipale detype demessageet lespages de catégoriefonctionnaientbien,mais cela échouait sur lesmessages!(WPpensait que l'article était une sous-catégorieet a renvoyé un 404.) L'étapemanquante était lefiltre `` rewrite_rules_array '',comme décritici: https://stackoverflow.com/a/23702560/915762This almost worked for me – the main post type page and the category pages were working fine, but it was failing on the posts! (WP thought the post was a sub-category, and returned a 404.) The missing step was the ```rewrite_rules_array``` filter, as described here: https://stackoverflow.com/a/23702560/915762
- 0
- 2020-07-27
- JoLoCo
J'ai dumal àtravailler avec les règles de réécriture de WordPresset jepourrais avoirbesoin d'aide.
J'ai untype demessagepersonnalisé appelé
_shows_
.Tous les spectacles ont une seule catégorie detaxonomiepersonnalisée
_show-category_.
Un_show_
n'aurajamaisplus d'un_show-category_
.Je voudrais quemes URL soient acheminées de cettemanière:
Donc,àtitre d'exemple dans lemonde réel,disons quenous avons un
_show-category_
"Foo"et un_show_
postintitulé "Bar" qui a "Foo" comme c'est_show-category_
. Jem'attendrais à ce quemon application WordPress ressemble à ceci:J'essaye d'éviter lesplugins lorsque c'estpossible,maisje suis ouvert àtoute solution.