Permalinks: Benutzerdefinierter Beitragstyp -> Benutzerdefinierte Taxonomie -> Beitrag
-
-
Ichmöchte Sienur aufetwas hinweisen,dasich vorhertunmusste. 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 Antworten
- Stimmen
-
- 2013-08-01
Registrieren Sie zunächst Ihre Taxonomie und setzen Sie das Argument
slug
vonrewrite
bisshows
:register_taxonomy( 'show_category', 'show', array( 'rewrite' => array( 'slug' => 'shows', 'with_front' => false ), // your other args... ) );
Registrieren Sie als Nächstes Ihren Beitragstyp und setzen Sie den Slug auf
shows/%show_category%
und setzen Sie das Argumenthas_archive
aufshows
:register_post_type( 'show', array( 'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ), 'has_archive' => 'shows', // your other args... ) );
Fügen Sie zuletzteinen Filter zu
post_type_link
hinzu,um die Showkategoriein einzelnen Showpermalinks zuersetzen: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
Ich habe das Argument
has_archive
vonregister_post_type
oben vergessen,das aufshows
gesetzt werden sollte.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,danke!Der Filterpost_type_link warfürmich dasfehlende Teil.Wenn Sie diesen Threadmit demselben Problem lesen,istnur zubeachten,dass die Funktion wpa_show_permalinkseinen kleinen Fehler aufweist,bei dem $post->post_type=='show'eigentlich 'show' sein sollte.Nochmals vielen Dank 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
-
Danke,Milo!Das hatmein Problemgelöst.Ich habe versucht,mit dem [diesem Plugin] (https://wordpress.org/plugins/custom-post-type-permalinks/)etwas Ähnliches zuerreichen,und dieneugeschriebenen URLs haben 404erhalten. Ich denke,esmanuell richtig zumachen.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,ich komme von http://wordpress.stackexchange.com/questions/199456/custom-taxonomy-post-slug-permalink und landemit diesem Ansatzimmer wieder aufeiner "404".Meine Permalink-Struktur lautet "% 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
-
Wenn Sieeine Änderung aneiner vorhandenen WordPress-Instanz vornehmen,gehen Sie zu Einstellungen> Permalinks und klicken Sie auf Speichern.Die Änderungen,die Siein functions.php vorgenommen haben,werdenerst wirksam,wenn Sie diestun.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
-
Dies hatfürmichbeinahefunktioniert,da die Taxonomie auf der Seitemit dem Beitragstyp angezeigt wird. Die/post_type/taxonomy/isteine legitime Seite (zuvor 404),abermeine/post_type/taxonomy/postist 404'ing.Ich habefestgestellt,dassbei der Registrierung der Taxonomie über "show_category","show" registriert wurde,obwohlnur die show_category die Taxonomieist.Ich registrierenur die Taxonomie.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
-
@Milojede Möglichkeit,diesmit Sub-Sub-Steuern wie zu arbeiten Shows/Steuern/Untersteuer/Post?@Milo any way to get this to work with sub sub tax like shows/tax/subtax/post ?
- 4
- 2017-01-26
- Benn
-
Ich wäre auch daraninteressiert zu wissen,wie diesmit Taxonomiekindern wie "/show/tax/subtax/postname"funktioniertI 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
-
Diesisteine wirklich wertvolle Technik,danke.Esgibt sowiesoein kleines Problem: Wenn Sie den 'post_type_link' verwenden,verschwindet die Schaltfläche zum Ändern/Bearbeitenin der Post-Edit-Ansicht des Administrators.Diesbedeutet,dass der Slug des Postsnichtbearbeitet werden kann. Daher wird dieser Slugbehoben. Wenn Sie denpost_title später ändern,können Sieihnnicht auf dem Slug spiegeln.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
-
Wie (intern) wird 'Shows/% show_category%' automatischin die richtige Taxonomie/den richtigen Begriff aufgelöst?Ichbin nur Neugierig.Offizielle register_post_type-Dokumenteerklären odergeben Ihnen keine Informationen und lassen stattdessenglauben,dass wirnur reguläre Zeichenfolgen anstelle vollständiger Permastrukturen übergeben können. Außerdem kannichbei der Erstellung der Taxonomie kein Dokument über die automatische Generierung von Permastruktur-Tagsfinden.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 Ichmussesnocheinmal versuchen,icherinneremichnicht,dass der Post-Slugin diesem Fallnichtbearbeitet werden kann.Ich weiß,dassichbei komplexeren Strukturen stattdessen "add_permastruct" verwendenmusste.WPmachtin diesem Fallnichtsmit `% show_category %`,esistnurein Platzhalter,den Sie selbstim`post_type_link` Filterersetzenmüssen.Dies kanntatsächlichein gültiges Umschreibetag sein,z. B. wenn Sieein benutzerdefiniertes Feld oderetwas anderesin der URL verwendenmöchten.@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
-
Wenn Sie direktnach der Registrierung der Beitragstypen,jedoch vor dem Filter "post_type_link",einen Blick auf $ wp_rewrite werfen,werden Siefeststellen,dass das Tag% show_category% sowie die zugehörigen Permastrukturengeneriert wurden.Esist also seltsam,dass sieexistieren,also werden sieerkannt,aber wahrscheinlich weiß WordPressnicht,wieman siebehandelt.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_categorymussein gültiges Umschreibetag sein,dasesist,daesim Rahmen der Registrierung der Taxonomie hinzugefügt wurde,aberes kann auchnureines sein,das über add_rewrite_tag hinzugefügt wird.Esmacht dasselbe hinter den Kulissen.@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
-
Waspassiert,wenn Sie unterschiedliche Schneckenin verschiedenen Sprachenbenötigen?(WPML zum Beispiel).Und wennfürbestimmte Posts keine Kategoriefestgelegtist,haben sie dannimmernochnur/show/postname?Prost!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
-
Im WPML-Fallfunktioniert diesfür die Standardsprache,in anderenjedoch leidernichtIn WPML case this works for default language but unfortunately not in others
- 0
- 2019-02-27
- Ivan Topić
-
Ich wünschte,dies würde auchfürmichfunktionieren,aberjeder Singularendetmit einem 404 ....I so wished this would work for me as well but every singular ends in a 404....
- 4
- 2019-03-02
- Beee
-
Diesführt leider auchfürmich zu 404s ... auchnach dem Aktualisieren von Permalinks.This is just resulting in 404s for me too, unfortunately... even after refreshing permalinks.
- 0
- 2019-11-05
- Wilson Biggs
-
WordPress 5.2.4 und WordPress 5.3führten auchfür diese Lösung zu 404.Ich habeeine Frageim WP-Support-Forumgestellt,in dergefragt wird,objemand anderes Kenntnisse darüber hat,was sichin den letzten Jahrenbeim Umschreibengeändert hat und was diese Fähigkeitmöglicherweisebeeinträchtigt hat. Ich verwendejetztein Plugin,um die Permalink-Struktur zu verwalten,undes scheint,dass das Plugineinige wp_query-Analysen durchführt,damit die Permalinks korrektfunktionieren.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
-
Ich hatte dasgleiche 404-Problem aufeinzelnen Seiten von Showposts wie von anderen Benutzern kommentiert,konnteesjedoch umgehen,indemich "add_rewrite_rule (" zeigt/([^/] +)/([^/] +) "hinzufügte."index.php? show=$entspricht [2] ','top '); `meinen Funktionen.Dadurch wird der zweite Slug-Teilnach 'show'einem Showpost-Namen zugeordnet.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
-
Milos Lösungfunktioniertfast.Leidergeht der Beitragstyp verloren und die Standardvorlage wird anstelle des CPT verwendet.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
-
Das hatbei mirfastfunktioniert - die Seitemit dem Hauptposttyp und die Kategorieseitenfunktionierteneinwandfrei,aberbei den Posts schlugesfehl!(WP hielt den Beitragfüreine Unterkategorie undgabeine 404 zurück.) Derfehlende Schritt war der Filter "rewrite_rules_array",wie hierbeschrieben: 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
Ich habe Problemebeim Arbeitenmit WordPress-Regeln zum Umschreiben und könnte Hilfegebrauchen.
Ich habeeinen benutzerdefinierten Beitragstypnamens
_shows_
.Alle Shows habeneine einzigebenutzerdefinierte Taxonomiekategorie
_show-category_.
Eine_show_
hatniemalsmehr alseine_show-category_
.Ichmöchte,dassmeine URLsfolgendermaßen weitergeleitet werden:
Nehmen wir als Beispiel aus der Praxis an,wir habeneinen
_show-category_
"Foo" undeinen_show_
-Postmit dem Titel "Bar",der "Foo"enthält_show-category_
. Ich würdeerwarten,dassmeine WordPress-App so aussieht:Ich versuche,Pluginsnach Möglichkeit zu vermeiden,bin aberfürjede Lösung offen.