it-swarm.com.de

Erstellen Sie eine Permalink-Struktur für ein Taxonomie-Archiv pro benutzerdefiniertem Beitragstyp

Ich bin verrückt geworden, um das herauszufinden. Im Wesentlichen habe ich zwei benutzerdefinierte Beitragstypen erstellt: 'the_case_study 'und 'the_video' mit den entsprechenden Slugs 'case-studies' und 'videos'.

Ich habe auch drei Taxonomien erstellt, die sowohl für the_case_study als auch für the_video gelten. Dies sind 'the_room', 'the_system' und 'the_style'.

Standardmäßig zeigt das Taxonomiearchiv alle Posts mit einem bestimmten Begriff an, und der Permalink sieht folgendermaßen aus:

example.com/room/kitchen (displays all posts tagged with kitchen)

Ich hätte gerne ein Taxonomie-Archiv, das nur die Posts des aktuellen benutzerdefinierten Post-Typs anzeigt und einen Permalink hat, der relativ zu diesem benutzerdefinierten Post-Typ ist. Zum Beispiel:

example.com/case-studies/room/kitchen (should display all case studies tagged with kitchen)

example.com/videos/room/kitchen (should display all videos tagged with kitchen)

Ich habe bereits ein ähnliches Problem an anderer Stelle auf der Website gelöst, unter anderem basierend auf dieser Antwort . Ich weiß jedoch nur, wie das für einen Beitragstyp funktioniert.

Das scheint möglich zu sein, aber ich weiß nicht, wie ich es anstellen soll. Im Wesentlichen möchte ich in der Lage sein, das übergeordnete Element der aktuellen Taxonomieseite zu finden, wobei dieses übergeordnete Element der aktuelle benutzerdefinierte Post-Typ ist. Ich bin mir jedoch nicht sicher, wie dies mit den Einschränkungen für den benutzerdefinierten Post-Typ und die Taxonomie zusammenhängt.

Ist das, was ich versuche, möglich? Sollte ich anders darüber nachdenken?

4
jpsingleton

Dies ist sehr einfach, indem benutzerdefinierte Umschreiberegeln hinzugefügt werden. Damit sollten Sie beginnen:

add_action( 'init', 'wpse_100386_rewrites' );
function wpse_100386_rewrites() {
    add_rewrite_rule( 'case-studies/room/([^/]+)/?', 'index.php?the_room=$matches[1]&post_type=the_case_study', 'top' );
    add_rewrite_rule( 'videos/room/([^/]+)/?', 'index.php?the_room=$matches[1]&post_type=the_video', 'top' );
}

Stellen Sie wie immer beim Ändern von Umschreiberegeln sicher, dass Sie Ihre Umschreiberegeln leeren, indem Sie zu Einstellungen -> Permalinks gehen und auf "Änderungen speichern" klicken.

1
Matthew Boynes