Ich habe ein benutzerdefiniertes Post-Portfolio (Slug-Portfolio) in meinem Thema und alles funktioniert gut, bis auf eine Sache. Wenn Benutzer eine Seite mit einer Portfoliostrecke erstellen, z. B. example.com/portfolio, wird dem Thema zufolge die benutzerdefinierte Archivseite für Beitragstypen verwendet, nicht meine im Editor erstellte Seite.
Kann ich das Slug-Portfolio irgendwie "reservieren", wenn Seiten gespeichert werden, um sicherzustellen, dass es niemals verwendet wird, oder umbenannt in Portfolio-Seite?
In meinem Projekt werden die in diesem Lernprogramm beschriebenen Methoden verwendet. Hier ist der Konflikt, auf den ich mich beziehe:
"Abgesehen davon, dass Sie den Code patchen müssen, gibt es hier noch einen weiteren Haken: Sie können Ihren Page-Slug nicht genauso nennen wie Ihren benutzerdefinierten Post-Typ-Slug. Stellen Sie sich Ihren benutzerdefinierten Post-Typ-Slug als reserviertes Schlüsselwort vor Der Titel Ihrer Seite hat den gleichen Namen wie Ihr benutzerdefinierter Beitragstyp "slug", solange sich Ihr Seiten-Slug von diesem unterscheidet. " - http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/
Danke für jeden Rat!
quelle
Antworten:
Mit den folgenden 2 Filtern können Sie sich einbinden, wenn WordPress den Slug überprüft. Sie finden sie in der Funktion wp_unique_post_slug () in der Datei wp-includes / post.php.
Es gibt zwei Filter, einen für hierarchische Posts und einen für nicht hierarchische. Der hierarchische Filter liefert die ID für das übergeordnete Element des Posts. Wenn also $ post_parent 0 ist, wissen Sie, dass es sich um einen "Basispost" handelt.
Die Filter übergeben auch den $ post_type, wenn Sie Ihrer Logik bestimmte Post-Typen hinzufügen möchten.
Wenn Sie "true" zurückgeben, teilen Sie WordPress mit, dass dieser Slug schlecht ist, und WordPress fügt ein Suffix hinzu, so wie es der Fall wäre, wenn Sie versuchen würden, uns einen bereits belegten Postnamen / Slug zuzuweisen.
quelle
Erstellen Sie eine Seite mit einer Portion "Portfolio" und machen Sie sie "Privat". Es wird vor der Öffentlichkeit verborgen, wenn der Slug für die weitere Verwendung reserviert wird.
quelle
Ist genau diesem Problem bei der Untersuchung eines Paginierungsproblems begegnet. Wir haben eine News-Homepage (Slug "News") und die Paginierung schlug fehl ... Versuche, zu / news / page / 2 / zu gelangen, führten immer zu "404 - Not Found".
Das Problem stellte sich heraus, dass unserem benutzerdefinierten Typ "News" auch der Slug "News" zugewiesen wurde. Durch Ändern des letzteren (zum Beispiel in "news_archive") wurde das Problem behoben. Dadurch wurden die ursprünglichen Nachrichten-URL-Verweise nicht geändert. Das Ändern des News-Homepage-Slugs funktionierte auch, aber dann würden alle URLs den geänderten Slug enthalten.
quelle