Custom Post Type Slug / Seiten Slug Conflict – Verhindert die Verwendung von reservierten Slug auf Seite speichern?

Ich habe eine benutzerdefinierte Art von Portfolio (Slug-Portfolio) in meinem Thema und alles funktioniert gut bis auf eine Sache. Wenn Leute eine Seite mit einem Portfolio-Ausschnitt erstellen, zB: example.com/portfolio, denkt das Thema, dass ich die Archivseite des benutzerdefinierten Post-Typs verwenden möchte, nicht meine Seite, die im Editor erstellt wurde.

Kann ich das Slug-Portfolio irgendwie “reservieren”, wenn Seiten gespeichert werden, um sicherzugehen, dass es nie benutzt wird, vielleicht in Portfolio-Seite umbenannt?

Mein Projekt verwendet die in diesem Tutorial beschriebenen Methoden. Hier ist der Konflikt, auf den ich mich beziehe:

“Abgesehen davon, dass wir den Code patchen müssen, gibt es noch einen weiteren Haken: Sie können Ihren Page-Slug nicht wie einen benutzerdefinierten Post-Typ-Slug aufrufen. Denken Sie an Ihren benutzerdefinierten Post-Typ-Slug als reserviertes Keyword Der Titel Ihrer Seite sollte den gleichen Namen haben wie der benutzerdefinierte Post-Typ-Slug, solange Ihr Page-Slug etwas anderes ist. ” – http://wp.utsplus.com/tutorials/custom-post-type-pagination-chaining-method/

Danke für jeden Hinweis!

Solutions Collecting From Web of "Custom Post Type Slug / Seiten Slug Conflict – Verhindert die Verwendung von reservierten Slug auf Seite speichern?"

Die folgenden 2 Filter ermöglichen es Ihnen, sich einzuhaken, wenn WordPress den Slug überprüft und in der function wp_unique_post_slug () in der Datei wp-includes / post.php gefunden wird.

Es gibt zwei Filter, einen für hierarchische Posts und einen für nicht-hierarchische. Der hierarchische Filter liefert die ID für das Postparent. Wenn also $ post_parent 0 ist, wissen Sie, dass dies ein “Basis” -Post ist.

Die Filter übergeben auch den $ post_type, wenn Sie Ihrer Logik spezifische Post-Typen hinzufügen möchten.

Wenn du “true” zurücksummierst, sagst du WordPress, dass dieser Slug schlecht ist, also fügt WordPress ein Suffix hinzu, genau wie wenn du einen Postnamen / Slug, der bereits vergeben ist, verwenden möchtest.

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 ); function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) { if ( !$post_parent && $slug == 'portfolio' ) return true; return $is_bad_hierarchical_slug; } add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 ); function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) { if ( $slug == 'portfolio' ) return true; return $is_bad_flat_slug; } 

Erstellen Sie eine Seite mit einem “Portfolio” -Block und machen Sie sie “Privat”. Es wird von der Öffentlichkeit ausgeblendet, wenn der Slug für die weitere Nutzung reserviert wird.

Bei der Untersuchung eines Seitenumbruchproblems ist genau dieses Problem aufgetreten. Wir haben eine News-Homepage (slug “news”) und die Seitennummerierung ist fehlgeschlagen … Versuche, nach / news / page / 2 / zu gelangen, führten immer zu “404 – Not Found”.

Das Problem stellte sich heraus, dass unser Custom-Typ “News” auch die Nachricht “News” erhalten hatte. Durch die Änderung des letzteren (zB zu “news_archive”) wurde das Problem behoben. Dadurch blieben die ursprünglichen Nachrichten-URL-Referenzen unverändert. Das Ändern des News-Homepage-Slugs hat auch funktioniert, aber dann würden alle URLs den geänderten Slug enthalten.