Heute musste ich die Argumente für eine benutzerdefinierte Taxonomie ändern, die bereits von einem Plugin eines Drittanbieters registriert wurde . Konkret wollte ich das show_admin_column
Argument auf setzen true
und die rewrite
Schnecke so ändern , dass es nicht nur die Taxonomie-Schnecke war. In diesem Fall handelte es sich um einen Beitragstyp "Personen" mit einer benutzerdefinierten Taxonomie "Personenkategorie".
Ich war überrascht, dass dies vorher nicht gestellt wurde. Hier ist eine Frage und Antwort.
Antworten:
register_taxonomy()
ist das Werkzeug für den Job. Aus dem Kodex:Eine Möglichkeit wäre, die zu kopieren
register_taxonomy()
$args
und zu ändern. Dies würde jedoch bedeuten, dass zukünftige Änderungen des ursprünglichenregister_taxonomy()
Codes überschrieben würden.Daher ist es zumindest in diesem Fall vorzuziehen, die ursprünglichen Argumente abzurufen, die zu ändernden zu ändern und dann die Taxonomie neu zu registrieren. Die Inspiration für diese Lösung geht an @Otto in dieser Antwort auf eine ähnliche Frage zu benutzerdefinierten Beitragstypen .
Verwendung der
people
benutzerdefinierten Beitragstyp und diepeople_category
Taxonomie aus dem Beispiel:Beachten Sie, dass ich das dritte
register_taxonomy()
Argument auf den erwarteten Array-Typ typisiert habe. Dies ist nicht unbedingt erforderlich, daregister_taxonomy()
Verwendungen,wp_parse_args()
die mit einemobject
oder umgehen könnenarray
. Das heißt,register_taxonomy()
's$args
sollenarray
laut Kodex als eingereicht werden , also fühlt sich das für mich richtig an.quelle
'people_category'
) wie die ursprüngliche Taxonomie verwenden, damit Sie ihn überschreiben.capabilities
ist ein Problem aufgetreten: Der Parameter wird intern gespeichert,cap
sodass er nicht an die neu registrierte Taxonomie übergeben wird. Siehe meine Antwort auf eine ähnliche Frage hier