I was creating metaboxes for a special kind of pages. But i got stuck when showing metaboxes to the pages only who currently have the template 'Sky'. my template file name is sky-template.php and holds this code.
/*
Template Name: Sky
*/
And I am adding metaboxes using this function.
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add() {
add_meta_box( 'sky_page_excerpt', 'SkyScraper Page Excerpt and Links', 'sky_page_excerpts', 'page', 'advanced', 'high' );
}
I want to add the metaboxes only to pages with template sky. How will i do that. Thanks in advance
I was creating metaboxes for a special kind of pages. But i got stuck when showing metaboxes to the pages only who currently have the template 'Sky'. my template file name is sky-template.php and holds this code.
/*
Template Name: Sky
*/
And I am adding metaboxes using this function.
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add() {
add_meta_box( 'sky_page_excerpt', 'SkyScraper Page Excerpt and Links', 'sky_page_excerpts', 'page', 'advanced', 'high' );
}
I want to add the metaboxes only to pages with template sky. How will i do that. Thanks in advance
Use the page-specific meta box hook & accept the $post
object that's passed to it - then you can check if it currently has a page template of sky-template.php
.
add_action( 'add_meta_boxes_page', function ( $post ) {
if ( $post->_wp_page_template === 'sky-template.php' ) {
add_meta_box( 'sky_page_excerpt', 'SkyScraper Page Excerpt and Links', 'sky_page_excerpts', 'page', 'advanced', 'high' );
}
});
Note: this will only work on submit/refresh i.e. when you first (de)select the template when editing, you'll need to save changes and have the page reload for the meta box to take affect.