Benutzerdefinierter Permalink mit dynamischer Taxonomie für benutzerdefinierten Posttyp – functioniert, bricht jedoch andere Permalinks

Mein benutzerdefinierter Permalink mit dynamischer Taxonomie funktioniert für meinen benutzerdefinierten Post-Typ. Es bricht jedoch alle meine anderen Permalinks. Sie zeigen einen 404-Fehler im Inhaltsbereich an (Header und Sidebar werden weiterhin angezeigt).

Ich habe den folgenden Code verwendet, um die dynamischen Permalinks für den benutzerdefinierten Posttyp zu erstellen:

/*Adds Custom Permalinks for Course Segments*/ function custom_post_link($post_link, $id = 0) { $post = get_post($id); if(!is_object($post) || $post->post_type != 'course-segment') { return $post_link; } $course = 'course-segment'; if($terms = wp_get_object_terms($post->ID, 'course')) { $course = $terms[0]->slug; } return str_replace('%course%', $course, $post_link); return $post_link; } add_filter('post_type_link', 'custom_post_link', 1, 3); 

Ich habe meiner create_post_type() -function folgendes hinzugefügt:

 'rewrite' => array('slug' => '%course%') 

Ich habe den Code dafür: https://stackoverflow.com/questions/7723457/wordpress-custom-type-permalink-containing-taxonomy-slug .

Durch einfaches Auskommentieren der folgenden zwei Codezeilen funktionieren meine alten Permalinks, aber natürlich meine dynamischen Permalinks nicht:

 //add_filter('post_type_link', 'custom_post_link', 1, 3); //'rewrite' => array('slug' => '%course%') 

In Settings meine Permalinks auf %postname% .

Irgendwelche Gedanken oder Einsichten darüber, wie ich sowohl meine normalen Permalinks als auch meine dynamischen benutzerdefinierten Post-Typ-Permalinks zum Laufen bringen kann, würden sehr geschätzt werden! -Kennzeichen

Solutions Collecting From Web of "Benutzerdefinierter Permalink mit dynamischer Taxonomie für benutzerdefinierten Posttyp – functioniert, bricht jedoch andere Permalinks"

Wenn Sie WordPress 3.0.1 oder höher ausführen, glaube ich, dass Ihr Problem bei den Filterdeklaration und functionsargumenten “post_type_link” liegt.

Wenn der Filter ‘post_type_link’ angewendet wird, übergibt er die folgenden 4 Argumente:

 apply_filters('post_type_link', $post_link, $post, $leavename, $sample); 

Aber Ihre function akzeptiert $ post_link und $ id.

Probieren Sie die folgenden Anpassungen aus:

 function custom_post_link( $post_link, $post ) { if ( $post->post_type != 'course-segment') return $post_link; $course = 'course-segment'; if( $terms = wp_get_object_terms( $post->ID, 'course' ) ) $course = $terms[0]->slug; return str_replace( '%course%', $course, $post_link ); } add_filter( 'post_type_link', 'custom_post_link', 1, 2 ); 

Rachel hat Recht. Das Problem ist nicht der Filter. Wenn Sie das Problem vollständig entfernen, tritt das Problem immer noch auf, weil% taxonomy% (mit den Prozentzeichen) als benutzerdefinierter Posttyp-Slug verwendet wird.

Ich habe versucht, ein Nicht-Tag (ohne die Prozentzeichen) zu verwenden und alles andere funktioniert, aber dann kann ich es nicht vollständig durch die Taxonomien ersetzen – dh es wird nicht vom selben Filter erfasst.

Der Austausch geschieht also irgendwie anders, ich kann es nicht verstehen.

Ich kann nicht zulassen, dass die CPTs die Taxonomie im Permalink UND den Rest der Posts / Seiten zur gleichen Zeit zeigen. Es ist das eine oder andere.

Ich denke, es hat etwas damit zu tun, dass man nach Taxo / Postname BEFORE page / subpage sucht oder nicht beide vorher versucht, eine 404 zurückzugeben, aber es ist zu fortgeschritten für mich.

Dies funktioniert teilweise (nur Beiträge)

 global $wp_rewrite; $wp_rewrite->extra_permastructs['listing'][0] = "%listing_type%/%postname%"; add_rewrite_rule("([^/]+)/([^/]+)/?$", 'index.php?post_type=listing&listing_type=$matches[1]&name=$matches[2]', 'bottom'); add_rewrite_rule("([^/]+)/([^/]+)/?$", 'index.php?post_type=listing&listing_type=$matches[1]&page=$matches[2]', 'bottom'); 

Der obige Code (innerhalb der CPT-Definitionsfunktion) hat nur die Posts repariert, aber die Seiten (was die zweite Zeile für add_rewrite_rule betraf) sind immer noch kaputt.

Meine Details sind hier.

Dynamische Taxonomie im Permalink machte alle anderen Einträge nicht gefunden? Leider habe ich diese Frage vorher nicht gefunden oder ich hatte meine nicht gepostet.

Jede Idee wird geschätzt