Parent cpt / child benutzerdefinierte Post-Typ URL-Permalink-Beziehung

Ich versuche, eine Beziehung in WordPress zwischen zwei benutzerdefinierten Post-Typen einzurichten, die ich erstellt habe, und diese Beziehung innerhalb der Permalink-URL-Struktur jedes Post-Typs anzuzeigen.

Ich habe zwei benutzerdefinierte Post-Typen von solution_cpt und solution_offering_cpt erstellt . Es gibt eine Eins-zu-Viele-Beziehung von “solution_cpt” zu “solution_offering_cpt” . Mit anderen Worten, jedes ‘solution_offering_cpt’ hat niemals mehr als ein Elternteil ‘solution_cpt’ . Dies ist eine Eins-zu-Eins-Beziehung.

Die Art, wie ich jeden ‘solution_offering_cpt’-Beitrag mit seinem Pseudo-Elternpost’ solution_cpt ‘in Verbindung bringe, ist eine benutzerdefinierte Taxonomie. Jedes Mal, wenn ein “solution_cpt” -Post erstellt wird, habe ich eine function, die einen neuen Begriff erstellt und meiner benutzerdefinierten Taxonomie hinzufügt. Wenn der ‘solution_cpt’-Beitrag zu einem späteren Zeitpunkt gelöscht wird, habe ich natürlich auch eine function, um diesen Begriff aus der Taxonomie zu entfernen.

Die URL-Struktur, die ich erstellen möchte, lautet:

/solution/solution_cpt/solution_offering_cpt 

Die erste Ebene von /solution/solution_cpt funktioniert und zeigt auf den richtigen Post auf der Site. (Die Seite, die in meinem Theme verwendet wird, ist ‘single-solution_cpt.php’.) Es ist die URL zum zweiten Post-Typ (dh. /solution/solution_cpt/solution_offering_cpt ), die nicht richtig funktioniert und mir einen 404-Fehler gibt. (PS. Ich habe meine Permalinks mehrmals gespült.)

So habe ich meine beiden benutzerdefinierten Beitragstypen registriert und meine benutzerdefinierte Taxonomie eingerichtet:

 // Register post types function ta_create_post_types() { register_post_type('solution_cpt', $labels, 'hierarchical' => false, 'public' => true, 'has_archive' => false, 'rewrite' => array('slug' => 'solution'), 'capability_type' => 'post' ); register_post_type('solution_offering_cpt', $labels, 'hierarchical' => false, 'public' => true, 'has_archive' => false, 'rewrite' => array('slug' => 'solution/%solution_cat%'), 'capability_type' => 'post' ); } add_action('init', 'ta_create_post_types', 0); // Create custom taxonomy function ta_create_custom_taxonomies() { register_taxonomy('solution_cats', array('solution_cpt', 'solution_offering_cpt'), $labels, 'hierarchical' => true, 'query_var' => true, 'rewrite' => array('slug' => 'solution') ); } add_action('init', 'ta_create_custom_taxonomies', 0); 

Ich habe auch zwei functionen, die das Hinzufügen und Entfernen von Termen aus der benutzerdefinierten Taxonomie “solution_cats” steuern, wenn ein neuer “solution_cpt” -Post respektvoll erstellt oder entfernt wird. Ich kann diesen Code posten, wenn jemand davon profitieren würde. … wollte diese erste Anfrage so kurz wie möglich halten.

Hinweis: Die Begriffe, die erstellt werden, haben die Titel und Slugs des erstellten ‘solution_cpt’ gespiegelt. Wenn ich zum Beispiel einen “solution_cpt” -Beitrag mit dem Titel “Creative Services” erstellen würde, würde automatisch ein Begriff erstellt und der Taxonomie mit dem Titel “Creative Services” hinzugefügt und der Slug auf “creative-” gesetzt. Dienstleistungen”.

Ich nehme an, dass ich die WordPress Rewrite API verwenden muss, um von der URL-Struktur zu ziehen, die ich benötige. Auch diese Struktur ist:

 /solution/solution_cpt/solution_offering_cpt 

Hier ist der aktuelle Umschreibcode, den ich habe:

 // Build the 'solution_offering_cpt' URL function ta_add_rewrite_rules() { global $wp_rewrite; $wp_rewrite->add_rewrite_tag('%solution_cat%', '([^/]+)', 'solution_cat='); $wp_rewrite->add_permastruct('offering', 'solution/%solution_cat%', false); } add_action('init', 'ta_add_rewrite_rules'); function filter_solution_offering_cpt_link($link, $post) { if ($post->post_type != 'solution_offering_cpt') return $link; if ($cats = get_the_terms($post->ID, 'solution_cats')) $link = str_replace('%solution_cat%', array_pop($cats)->slug, $link); return $link; } add_filter('post_type_link', 'filter_solution_offering_cpt_link', 10, 2); 

Alles, was ich bekomme, ist ein 404-Fehler beim Versuch, zu einem “solution_offering_cpt” -Post zu navigieren. Ein Beispiel ist ein ‘solution_cpt’- Beitrag mit dem Titel “Creative Services” und dem Slug “creative-services” und ein ‘ solution_offering_cpt’- Beitrag mit dem Titel “UI / UX” und dem Slug “ui-ux”.

Wenn ich zu /solution/creative-services/ui-ux navigiere, erhalte ich einen 404-Fehler. Ich habe meine Permalinks gespült. Ich bin mir nicht sicher, wo ich falsch liege, aber ich bin mir sicher, dass meine Rewrites weg sind. Die WordPress Rewrite API ist ein Bär und die Dokumentation ist schrecklich !! Würde mich sehr über Hilfe bei diesem einen Jungs & Mädels freuen. Vielen Dank!

Solutions Collecting From Web of "Parent cpt / child benutzerdefinierte Post-Typ URL-Permalink-Beziehung"