Ist es möglich, den Slug des vorhandenen benutzerdefinierten Post-Typs eines Plugins neu zu deklarieren / zu ändern (ohne einfach das Plugin zu bearbeiten)?
Das heißt, wenn Plugin X einen benutzerdefinierten Post-Typ mit dem Slug / uncookedtoast / erstellt, ist es möglich, functions.php (oder etwas Ähnliches) einen Filter hinzuzufügen, der den Slug in / bread / ändert?
custom-post-types
functions
slug
Edbury
quelle
quelle
Antworten:
Ja, das ist möglich, aber wenn das Plugin einen benutzerdefinierten Beitragstyp mithilfe des
rewrite => array('slug' => 'post_type')
Parameters erstellt, ist es unwahrscheinlich, dass Sie den Slug ersetzen können .Bei jeder Erstellung benutzerdefinierter Beitragstypen werden URL-Umschreiberegeln in die Datenbank geschrieben. Abhängig davon, welche Aktion die Erstellung des benutzerdefinierten Post-Typs auslöst (z. B. die Init- Aktion), werden in WordPress die Umschreiberegeln gelöscht und die Slugs des benutzerdefinierten Post-Typs wiederhergestellt, unabhängig davon, welche Änderungen Sie vornehmen möchten.
Sie können jedoch benutzerdefinierte Slugs für die benutzerdefinierten Post-Typen bereitstellen. Im folgenden Beispiel wird davon ausgegangen, dass Sie einen benutzerdefinierten Beitragstyp von haben
movies
und versuchen, den/movies/
Slug in zu ändern/films/
.Um vollständig zu sein, hier ist die Grundfunktion, die zum Definieren des
movies
benutzerdefinierten Beitragstyps verwendet wird. Das Plugin, auf das Sie verweisen, sollte ungefähr so aussehen:Sie können die Optionstabelle ändern, indem Sie Ihre eigenen benutzerdefinierten Regeln basierend auf dem vorhandenen Beitragstyp bereitstellen.
Grundsätzlich machen wir das:
So können Sie das machen:
Jetzt haben Sie zwei Möglichkeiten, auf Ihre Filme zuzugreifen:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Beachten Sie, dass ich nicht empfehle, die
add_custom_rewrite_rule
in dieinit
Aktion einzuhängen, da sie zu häufig ausgelöst wird. Dies ist nur ein Beispiel. Ein besserer Ort, um die Funktion anzuwenden, ist die Themenaktivierung, die Plugin-Aktivierung, möglicherweise die Aktion save_post usw. Je nachdem, was Sie tun müssen, müssen Sie sie möglicherweise nur einmal oder nur ein paar Mal auslösen.Möglicherweise möchten Sie an dieser Stelle die Permalinks für den benutzerdefinierten Beitragstyp für die Verwendung des
/movies/
Slugs aktualisieren . Wenn Sie beispielsweise zu navigieren/films/
, werden alle Ihre Filme aufgelistet. Wenn Sie jedoch den Mauszeiger über den Titel bewegen, wird festgestellt, dass der/movies/
Slug noch verwendet wird.Um noch einen Schritt weiter zu gehen, können Sie technisch eine 301-Umleitung einleiten, um alle Links zu erfassen und
/movies/
zu ihrem/films/
Gegenüber umzuleiten. Dies hängt jedoch davon ab, was Sie tun möchten.quelle
$post
in deradd_custom_rewrite_rule()
Funktion zu verwenden, aber es wirft Fehler in WP Admin mit der Aufschrift "Versucht, die Eigenschaft eines Nicht-Objekts zu erhalten". Wie kann ich $ post bekommen, um den Meta-Wert zu erhalten?Dieser Code funktionierte gut für mein Kinderthema. Benötigt, um "Programm" Slug zu "Ort" zu ändern.
quelle
$args['has_archive'] = false
und das funktionierte.