最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

custom field - How to add add_meta_box to specific Page Template?

programmeradmin6浏览0评论

I want to add add_meta_box to specific page type like Page Template, Like Product Template.

I am using this article / to try it.

I want to add add_meta_box to specific page type like Page Template, Like Product Template.

I am using this article http://wp.smashingmagazine/2011/10/04/create-custom-post-meta-boxes-wordpress/ to try it.

Share Improve this question asked Jan 21, 2013 at 12:59 Ajay PatelAjay Patel 6584 gold badges16 silver badges27 bronze badges
Add a comment  | 

4 Answers 4

Reset to default 10

If your custom page template filename is foobar.php, you can use 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
}

Personally, I like calling this inside my add_meta_boxes_page callback, and wrapping it around the add_meta_box() call itself.

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' );

You'll just need to instruct users to save the page after assigning the template, so that the meta box appears.

I found a few bugs with the answer above option above but I customized this option below and it helped - no bugs at all.

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

It's clean

This is a solution with name of the page :

Accueil is the name of the page.

    $screens = ['Accueil'];
    foreach ($screens as $screen) {
     if ( get_the_title() == $screen ) {//condition
     add_meta_box(
      'accueil_données',
      'Informations sur Orchestre',
      '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' );

I got a way to add metabox in specific page using page id.

发布评论

评论列表(0)

  1. 暂无评论