Les fonctions classiques
On trouve de nombreux tutoriels sur la manière de limiter l’affichage d’une metabox en fonction du modèle de page.
Le plus souvent, on tombe sur cette fonction standard.
add_action('add_meta_boxes', 'add_product_meta'); function add_product_meta() { global $post; if(!empty($post)) { $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true); if($pageTemplate == 'page-templates/product-page.php' ) { add_meta_box( 'product_meta', // $id 'Product Information', // $title 'display_product_information', // $callback 'page', // $page 'normal', // $context 'high'); // $priority } } } function display_product_information() { // Add the HTML for the post meta }
Celle-ci provient du site du développeur Paulund.
Voici une version simplifiée.
function add_product_meta($post){ global $post; if ( 'product-page.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) { add_meta_box( 'product_meta', // $id 'Product Information', // $title 'display_product_information', // $callback 'page', // $page 'normal', // $context 'high'); // $priority ); } } add_action( 'add_meta_boxes', 'add_product_meta' );
Or en fonction de la manière dont vous avez structuré votre code, cela peut ne pas fonctionner.
Une fonction pour afficher une ou des metabox sur un ou plusieurs modèles de pages
En voici une autre, au cas où la première version ne produirait aucun résultat sur votre site. Je n’affiche ici que la première fonction de la création d’une meta box
function custom_editor_meta_box() { if( 'post.php' == basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']) && !isset($_GET['post_type']) ) { // get post ID $postid = $_GET['post']; // check the template file name if ('my-body-and-me-post.php' == get_page_template_slug($postid)) { add_meta_box ( 'custom-editor', __('Custom Editor', 'custom-editor') , 'custom_editor', 'post' ); } } }
Si on veut afficher la metabox sur plusieurs modèles de pages spécifiques :
function custom_reference_meta_box() { if( 'post.php' == basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']) && !isset($_GET['post_type']) ) { // get post ID $postid = $_GET['post']; if ('my-body-and-me-post.php' == get_page_template_slug($postid) || 'infographie.php' == get_page_template_slug($postid)) { add_meta_box ( 'custom-reference', __('Custom Reference', 'custom-reference') , 'custom_reference', 'post' ); } } }
Il faudra ensuite sélectionner votre modèle de page directement depuis l’interface d’édition de votre page ou article pour voir apparaître les metabox.
18/12/2019
Mis à jour le 19/12/2019
Par Copier coller | Dans wordpress