Nous allons voir comment afficher un meta box pour un template précis, mais pas pour toutes les pages par exemple, seulement les pages qui ont comme template ‘page_custom’. Souvent on ajoute des meta box pour les pages, posts et custom post type et des fois on ne veut pas avoir ces meta box pour certaines pages. Pour faire cela dans le fichier où vous ajoutez des meta_box souvent le fichier ‘functions.php’ vous pouvez faire comme suit :
add_action('admin_init','exemple_meta_init'); function exemple_meta_init() { $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ; $template_file = get_post_meta($post_id, '_wp_page_template', true); $type = "page"; if ($template_file == 'page_custom.php') { add_meta_box('header_meta_page', __('Header Page'), 'page_header_meta_setup', $type, 'normal', 'high'); add_action('save_post','page_meta_save'); } }
Comme vous remarquez, on récupère le post_id, ensuite on cherche le template depuis ce post_id et si ce que nous avons trouvé correspond à ce qu’on veut, on ajoute le meta_box ‘header_meta_page’. Bien sûr vous devriez avoir les fonctions
- page_header_meta_setup (pour mettre des post_meta)
- page_meta_save (pour enregistrer les données dans la base)
Ce que nous avons vu, nous permet d’optimiser notre affichage et faire faciliter l’insertion de contenu aux utilisateurs