Je veux ajouter add_meta_box à un type spécifique page comme type de page, modèle de produit similaire.
J'utilise cet article http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ pour l'essayer.
Si votre nom de fichier de modèle de page personnalisé est foobar.php
, vous pouvez utiliser get_post_meta()
:
global $post;
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
// The current page has the foobar template assigned
// do something
}
Personnellement, j'aime appeler ceci dans mon callback add_meta_boxes_page
et l'enrouler autour de l'appel add_meta_box()
lui-même.
function wpse82477_add_meta_boxes_page() {
global $post;
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
add_meta_box( $args );
}
}
add_action( 'add_meta_boxes_page', 'wpse82477_add_meta_boxes_page' );
Vous aurez juste besoin de demander aux utilisateurs de enregistrer la page après avoir affecté le modèle, afin que la boîte de méta apparaisse.
J'ai trouvé quelques bugs avec l'option de réponse ci-dessus mais j'ai personnalisé cette option ci-dessous et cela m'a aidé - pas de bugs du tout.
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
}
https://paulund.co.uk/display-post-meta-box-specific-page-templates
C'est propre
Ceci est une solution avec nom de la page:
Accueil est le nom de la page.
$screens = ['Accueil'];
foreach ($screens as $screen) {
if ( get_the_title() == $screen2 ) {
add_meta_box(
'accueil_données',
'Informations sur Orchestre',
'metabox_accueil_infos',
'page',
'normal',
'high'
);
}
}