Comment faire pour supprimer le lien «+ Ajouter une nouvelle catégorie» d'une métabox de catégorie

9

À l'intérieur d'une métabox de catégorie Wordpress ou de toute boîte de taxonomie personnalisée, il y a un lien avec le texte "+ Ajouter une nouvelle catégorie". Est-il possible de supprimer ce lien de préférence sans recourir à des hacks JS ou CSS pour le cacher? Un moyen de le cacher en utilisant une sorte de filtre ou de crochet d'action serait le meilleur.

Si aucun crochet d'action ou méthode de filtre n'existe pour le supprimer, je serais ouvert aux solutions JS et CSS en dernier recours.

La raison pour laquelle je fais cela est parce que j'ai une installation Wordpress intégrée à Magento et je crée et remplit une taxonomie personnalisée appelée "marques" avec une liste de marques de la base de données Magento afin qu'un poste puisse être attribué à une marque. Évidemment, cela signifie que je ne veux pas que les utilisateurs puissent ajouter leurs propres termes et ne puissent choisir que les marques ajoutées dynamiquement pour rester synchronisé avec Magento.

Je vous remercie.

Dwayne Charrington
la source

Réponses:

14

Les métaboxes par défaut sont enregistrées dans le fichier wp-admin/includes/meta-boxes.php. Vous y trouverez la fonction post_categories_meta_box()qui générera la métabox de taxonomie. Actuellement, aucun hook n'est disponible pour filtrer la sortie. Mais vous pouvez effectuer l'une des opérations suivantes:

  1. Utilisez remove_meta_box()pour supprimer la métabox de catégorie existante et enregistrer la vôtre add_meta_box(). Copiez et collez le code existant dans votre nouvelle fonction metabox et supprimez le bloc de code de la ligne 345vers 367.
  2. La manière la plus propre: supprimez la edit_termscapacité de vos rôles d'utilisateur avec remove_cap(). Si vous regardez dans la fonction metabox, en ligne 345vous pouvez voir une instruction if qui vérifie si l'utilisateur a la capacité edit_terms. Si c'est le cas, le + Add New XYsera affiché. Problème ici, le nom de la capacité est dynamique et pourrait être n'importe quoi. Si quelqu'un enregistre une taxonomie avec un nom de capacité différent, cela ne fonctionnera probablement pas (non testé).
rofflox
la source
1
Ah oui. Les capacités sont en fait une belle façon. Cependant, je ne veux pas supprimer la capacité des autres taxonomies, une seule en particulier. J'ai décidé que cacher le lien avec de bons CSS à l'ancienne était le choix le plus simple. Merci pour les super propositions.
Dwayne Charrington du
2
Je ne peux pas commenter le message de rofflox, mais la capacité semble avoir été changée en "manage_categories"
pkmatte
Je vous remercie! C'est la meilleure méthode que j'ai pu trouver, je l'utilise sur un multisite donc en utilisant la capacité "setup_network" pour limiter les administrateurs de site à utiliser ces capacités pour une taxonomie ajoutée par un plugin qui doit rester non édité.
Sam