Aujourd'hui, je devais changer les arguments d'une taxonomie personnalisée déjà enregistrée par un plug-in tiers . Plus précisément, je voulais définir l'argument show_admin_column
sur true
et modifier le slug rewrite
afin qu'il ne s'agisse pas uniquement du slug taxonomie. Dans ce cas, il s'agissait d'un type de message "Personnes" avec une taxonomie personnalisée "Catégorie de personnes".
J'ai été surpris que cela ne soit pas demandé auparavant, alors voici une question et une réponse.
register_taxonomy()
est l'outil idéal pour ce travail. Du Codex:
Cette fonction ajoute ou remplace une taxonomie.
Une option serait de copier le register_taxonomy()
$args
et de le modifier. Toutefois, cela signifierait que toute modification future du code register_taxonomy()
d'origine serait écrasée.
Par conséquent, au moins dans ce cas, il est préférable d’obtenir les arguments originaux, de modifier ceux que je veux modifier, puis de réenregistrer la taxonomie. L'inspiration pour cette solution va à @Otto dans cette réponse à une question similaire sur les types de publication personnalisés .
En utilisant le type de message personnalisé people
et la taxonomie people_category
de l'exemple, ceci le fera:
function wpse_modify_taxonomy() {
// get the arguments of the already-registered taxonomy
$people_category_args = get_taxonomy( 'people_category' ); // returns an object
// make changes to the args
// in this example there are three changes
// again, note that it's an object
$people_category_args->show_admin_column = true;
$people_category_args->rewrite['slug'] = 'people';
$people_category_args->rewrite['with_front'] = false;
// re-register the taxonomy
register_taxonomy( 'people_category', 'people', (array) $people_category_args );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'wpse_modify_taxonomy', 11 );
Notez ci-dessus que j'ai transtypé le troisième argument register_taxonomy()
dans le type de tableau attendu. Ce n'est pas strictement nécessaire car register_taxonomy()
utilise wp_parse_args()
qui peut gérer une object
ou array
. Cela dit, le $args
de register_taxonomy()
est censé être soumis sous forme de array
selon le Codex, donc cela me semble juste.