fields = array( array( 'id' => 'transparent-header', 'label' => esc_html__('Transparent header', 'bulk'), 'type' => 'checkbox', ), array( 'id' => 'header-font-color', 'label' => esc_html__('Transparent header font color', 'bulk'), 'type' => 'color', ), ); add_action('add_meta_boxes', array($this, 'add_meta_boxes')); add_action('save_post', array($this, 'save_post')); } /** * Hooks into WordPress' add_meta_boxes function. * Goes through screens (post types) and adds the meta box. */ public function add_meta_boxes() { global $post; if (!empty($post)) { $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true); if ($pageTemplate == 'template-parts/template-homepage.php') { foreach ($this->screens as $screen) { add_meta_box( 'header-options', esc_html__('Header Options', 'bulk'), array($this, 'add_meta_box_callback'), $screen, 'normal', 'high' ); } } } } /** * Generates the HTML for the meta box * * @param object $post WordPress post object */ public function add_meta_box_callback($post) { wp_nonce_field('header_options_data', 'header_options_nonce'); $this->generate_fields($post); } /** * Generates the field's HTML for the meta box. */ public function generate_fields($post) { $output = ''; foreach ($this->fields as $field) { $label = ''; $db_value = get_post_meta($post->ID, 'header_options_' . $field['id'], true); switch ($field['type']) { case 'checkbox': $input = sprintf( '', $db_value === '1' ? 'checked' : '', $field['id'], $field['id'] ); break; default: $input = sprintf( '', $field['type'] !== 'color' ? 'class="regular-text"' : '', $field['id'], $field['id'], $field['type'], $db_value ); } $output .= $this->row_format($label, $input); } echo '