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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.