Des conditions pour les metabox

Ici je récapitule certaines conditions qui vont nous aider à limiter l’affichage de metabox en fonction du type de page sur laquelle on se trouve

Limiter l’affichage d’une metabox à un article

Pour limiter l’affichage d’une metabox en fonction d’un article ou une page en particulier si celle ci n’est pas un « modèle de page » : Dans la fonction de création d’une metabox quelconque, il suffit d’indiquer l’ID du post en question avec un if($post_id == 40) par exemple, ou if (in_array($post_id, array(’40’, ‘788’))) s’il y a plus d’un post concerné

function associations_meta_boxes($post){
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
// on vérifie l'ID du post ou de la page
if (in_array($post_id, array('40', '788'))) {

    add_meta_box( 'id_associations', 'Associations Description', 'associations_build_meta_box', 'post', 'normal', 'high' );
}
}
add_action( 'add_meta_boxes', 'associations_meta_boxes' );

Dans cet exemple, la metabox n’apparaitra que dans les articles dont l’id est 40 ou 788

Limiter l’affichage d’une metabox en fonction d’une taxonomie

Si on a crée un custom post type avec une taxonomie particulière et qu’on souhaite limiter l’affichage d’une metabox à cette une seule entité de la taxonomie

function associations_meta_boxes($post){
 if ( has_term('activites-libres','categorie-activites' )){

    add_meta_box( 'id_associations', 'Associations Description', 'associations_build_meta_box', 'page', 'normal', 'high' );
}
}
add_action( 'add_meta_boxes', 'associations_meta_boxes' );

Dans un custom post type j’a crée deux taxonomies dont la taxonomie « categorie-activites ».J’ai ensuite plusieurs catégories que j’édite depuis le backoffice: activites-libres, activites-encadrees, activites-privees etc…cette condition permet de limiter l’affichage de la metabox à la seule catégorie « activites-libres »

Limiter l’affichage d’une metabox à nom de page, d’article ou de custom post type

function associations_meta_boxes($post){
global $post;
$slug = basename( get_permalink( $post->ID ) );
if ( 'associations' == $slug ) {

    add_meta_box( 'id_associations', 'Associations Description', 'associations_build_meta_box', 'page', 'normal', 'high' );
}
}
add_action( 'add_meta_boxes', 'associations_meta_boxes' );

Limiter l’affichage d’une metabox à un modèle de page

function associations_meta_boxes($post){
global $post;
if ( 'association.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {

    add_meta_box( 'id_associations', 'Associations Description', 'associations_build_meta_box', 'page', 'normal', 'high' );
}
}
add_action( 'add_meta_boxes', 'associations_meta_boxes' );

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.