Hello readers, In this tutorial I will guide you to "How to add Custom Metabox in a particular page in Wordpress."
 
In WordPress, If you want to add or save some extra field in a post, custom post type or in the page. So basically we can make a meta-box for this. We can also create our custom meta box for save extra field related to a particular post, page or custom post.
 
Normally if we can create a custom meta-box for the post it will appear all the post. But in case you want the meta-box to appear in a specific post or page then you need to do some minor changes in your custom meta-box code.
 
Below is the default code of Meta-box for a background image that appears all the pages.
 
/*
* Custom Metabox for Page Backgroung Image
*/
add_action( 'admin_init', 'background_metabox' );
function background_metabox()
{
	add_meta_box( 'caption_meta_box',
		'Page Backgroung Image Metabox',
		'background_review_meta_box',
		'page', 'normal', 'high'
	);    
}
//Add custom post meta boxes
function background_review_meta_box( $post ) {    
    $background_caption = esc_html( get_post_meta( $post->ID, 'background_caption', true ) );
    ?>
    <table style="width:100%;">
		<tr>
		    <td style="width: 20%">Background Image</td>
		    <td style="width: 40%">
		    	<input type="text" size="70" name="background_caption" placeholder="Background Image" value="<?php echo $background_caption; ?>">
		    </td>
		</tr>
    </table>
    <?php
}
// Save custom post meta values
add_action( 'save_post', 'background_metabox_fields', 10, 2 );
function background_metabox_fields( $caption_metabox_id )
{
	if ( isset( $_POST['background_caption'] ) )	{
		update_post_meta( $caption_metabox_id, 'background_caption', $_POST['background_caption'] );
	}
}
 
In below, Heading Meta-box will appear only in home page. In this code we can use the particular page ID which we want custom meta-box and compare with post ID, if post->ID and frontpage->ID are same, then the meta-box will appear in front page (home page). I use this code in my recent project.
 
/*
* Custom Image Heading Box
*/
function only_home_settings() {
   // only add this meta box to the page selected as front page:
   global $post;
   $frontpage_id = get_option('page_on_front');
   if($post->ID == $frontpage_id):
      add_meta_box('Home', 'Home:', 'only_home_form', 'page', 'side', 'core');
   endif;
}
// other meta box bits (form function and save function)
add_action( 'add_meta_boxes', 'only_home_settings' ); 
//Add custom meta boxes in page
function only_home_form( $post ) {    
    $heading_caption = esc_html( get_post_meta( $post->ID, 'heading_caption', true ) );
    ?>
     <table style="width:100%;">
		<tr>
		    <td style="width: 20%">Heading Caption</td>
		    <td style="width: 40%">
		    	<input type="text" size="70" name="heading_caption" placeholder="Heading Caption" value="<?php echo $heading_caption; ?>">
		    </td>
		</tr>
    </table>
     <?php
}
// Save custom post meta values
add_action( 'save_post', 'heading_metabox_fields', 10, 2 );
function heading_metabox_fields( $caption_metabox_id )
{
	if ( isset( $_POST['heading_caption'] ) )	{
		update_post_meta( $caption_metabox_id, 'heading_caption', $_POST['heading_caption'] );
	}
}
 
I hope it helps you. Thankyou!!
 
                       
                    
0 Comment(s)