web-dev-qa-db-fra.com

Afficher métaboxe dans un post-modèle personnalisé en fonction du terme de taxonomie?

Je ne suis pas sûr s'il existe une solution pour cela, mais je vais le demander quand même :)

J'ai créé un modèle personnalisé et une taxonomie personnalisée. La taxonomie fonctionne comme une sorte de "catégories" pour le post-modèle personnalisé.

La taxonomie contient des termes tels que "voiture, maison, bois".

J'utilise metaboxes pour ajouter des métadonnées personnalisées à mon modèle personnalisé.

Je me demande s'il est possible d'avoir différentes métaboxes visibles pour différentes conditions fiscales?

par exemple. Lorsque je crée une nouvelle publication (avec mon modèle de publication personnalisé) et que je coche la catégorie "voiture", je souhaite une metabox supplémentaire pour saisir des données supplémentaires. Ce metabox devrait apparaître uniquement si la publication est associée au terme de voiture dans cette taxonomie!

Est-ce que c'est possible?

Je vous remercie!

1
mathiregister

Cette question est peut-être une copie de: Ne montrer que metabox que lorsque la date-value dans une autre metabox est terminée?

En gros, il y a deux façons d'y parvenir. Utilisez le hook add_meta_boxes pour transmettre deux variables: type de poste et post. Ajoutez ensuite la metabox uniquement lorsque la publication a un certain terme:

add_action( 'add_meta_boxes', 'myplugin_add_my_custom_box',10,2);

function myplugin_add_my_custom_box($post_type,$post){

 //Check if post has 'car' term from 'my-tax' taxonomy. If not don't add metabox.
 if( ! has_term( 'car', 'my-tax', $post ) )
     return

 add_meta_box( 
    'myplugin_sectionid',
    __( 'My Post Section Title', 'myplugin_textdomain' ),
    'myplugin_metabox_callback',
    'event' 
);      
}

L'avantage de cette approche est qu'elle est plus stable - ne repose pas sur javascript et est moins "sale" que simplement cacher la metabox, qui constitue la deuxième option. L'avantage d'utiliser javascript est que vous pouvez le rendre "en direct" (l'ajout du terme "voiture" fait alors apparaître le terme, le supprimer le fait disparaître).

Remarque: Lorsque vous vous cachez, vous souhaitez effacer toutes les valeurs afin que la boîte de méta masquée ne publie aucune donnée que vous ou WordPress enregistrez ensuite.

Cette méthode est décrite ici: Basculez la métabox administrative en fonction du modèle de page choisi

2
Stephen Harris