J'utilise une version de ce script (http://www.deluxeblogtips.com/meta-box-script-for-wordpress/) mais je veux pouvoir limiter l'écran d'édition affiché par une méta-boîte.
Par exemple, si je veux seulement qu'une boîte méta soit affichée dans l'écran d'édition de la page "contact", est-ce possible?
$meta_boxes[] = array(
'id' => 'project-box-1', // meta box id, unique per meta box
'title' => 'Project Box 1', // meta box title
'pages' => array('page'), // post types, accept custom post types as well, default is array('post'); optional
'context' => 'normal', // where the meta box appear: normal (default), advanced, side; optional
'priority' => 'high', // order of meta box: high (default), low; optional
Dans votre fonction de rappel de hook add_meta_boxex
, vous aurez un appel add_meta_box()
. Emballez cet appel dans une condition, en utilisant les données du $post
global (je suis assez certain il est disponible dans le edit.php
). Par exemple, vous pouvez utiliser l'identifiant de page ou le slug.
ID de page:
global $post;
if ( '123' == $post->ID ) {
// Page has ID of 123, add meta box
add_meta_box( $args );
}
Page limace:
global $post;
$slug = basename( get_permalink( $post->ID ) );
if ( 'contact' == $slug ) {
// Page has ID of 123, add meta box
add_meta_box( $args );
}
Remarque: vous pouvez également cibler la page edit.php à l’aide de $pagenow
global, par exemple:
global $pagenow, $page;
if ( 'edit.php' = $pagenow && '123' == $post->ID ) {
add_meta_box( $args );
}
Cependant, il pourrait être plus efficace de simplement cibler le hook add_meta_boxes
approprié pour votre rappel. Par exemple, votre appel add_action()
ressemble probablement à ceci:
add_action( 'add_meta_boxes', 'callback_function_name' );
Mais vous pouvez utiliser le crochet add_meta_boxes_{post_type}
pour cibler spécifiquement les pages:
add_action( 'add_meta_boxes_page', 'callback_function_name' );
De cette façon, le rappel n'est appelé que dans le contexte post-type de page.
Voir j'ai tendance à penser un peu différent que les développeurs. Je ferais un modèle personnalisé et l'associerais à ce modèle. De cette façon, il existe et si vous souhaitez l'ajouter à une autre page, utilisez le nouveau modèle personnalisé.
Je n'ai pas le code devant moi en ce moment.