¿Cómo agregar add_meta_box a una Plantilla de Página específica?
Quiero agregar add_meta_box a un tipo de página específico como una Plantilla de Página, por ejemplo una Plantilla de Producto.
Estoy usando este artículo http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ como referencia.

Si el nombre de tu archivo de plantilla personalizada es foobar.php
, puedes usar get_post_meta()
:
global $post;
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
// La página actual tiene asignada la plantilla foobar
// hacer algo
}
Personalmente, me gusta llamar esto dentro de mi callback add_meta_boxes_page
, y envolverlo alrededor de la llamada add_meta_box()
misma.
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' );
Solo necesitarás indicar a los usuarios que guarden la página después de asignar la plantilla, para que aparezca el meta box.

Muchas gracias, un problema aquí para informar al usuario que guarde la página una vez. Por cierto, me ahorró mucho tiempo. Gracias CHIP

Encontré algunos errores con la opción de respuesta anterior, pero personalicé esta opción de abajo y funcionó - sin errores en absoluto.
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
'Información del Producto', // $title
'display_product_information', // $callback
'page', // $page
'normal', // $context
'high'); // $priority
}
}
}
function display_product_information()
{
// Añadir el HTML para los metadatos del post
}
https://paulund.co.uk/display-post-meta-box-specific-page-templates
Está limpio

Esta es una solución con el nombre de la página:
Accueil es el nombre de la página.
$screens = ['Accueil'];
foreach ($screens as $screen) {
if ( get_the_title() == $screen ) {//condición
add_meta_box(
'accueil_données',
'Información sobre Orquesta',
'metabox_accueil_infos',
'page',
'normal',
'high'
);
}
}

function mcf_add_custom_metabox() {
global $post;
if ( $_REQUEST['post'] == 30 ) {
add_meta_box( 'shop_editor', ' ', 'mcf_callback', 'page' );
}
}
add_action( 'add_meta_boxes_page', 'mcf_add_custom_metabox' );
Encontré una forma de agregar metaboxes en una página específica usando el ID de la página.
