Osobiście wolę postępować zgodnie z poniższym wzorem, aby dodać niestandardowe moduły obsługi meta do typów postów. Poniżej możesz dodać obsługę meta do typu postu, po prostu dodając klucz obsługi („podtytuł” w poniższym przykładzie) do tablicy wsparcia dla typu postu, wywołując metodę add_post_type_support („mój_typ_typy”, „podtytuł”);
class Subtitle_Meta_Handler {
public function initialize() {
add_action('add_meta_boxes', array($this, 'add_metabox'), 10, 2);
add_action('save_post', array($this, 'update'));
}
public function add_metabox($post_type, $post)
{
if(post_type_supports($post_type, 'subtitle'))
{
add_meta_box('subtitle', 'Subtitle', array($this, 'metabox'), $post_type);
}
}
public function metabox($post)
{
$subtitle = get_post_meta($post->ID, 'subtitle', true);
if(!$subtitle)
{
$subtitle = '';
}
?>
<input type="text" style="width: 70%;" value="<?php echo esc_attr($subtitle);?>" name="subtitle" id="subtitle">
<?php
wp_nonce_field('update_subtitle', 'subtitle_nonce');
}
public function update($post_id)
{
if(wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return $post_id;
}
if(isset($_REQUEST['subtitle_nonce']) && wp_verify_nonce($_REQUEST['subtitle_nonce'], 'update_subtitle')) {
$subtitle = trim(strip_tags($_REQUEST['subtitle'], '<b><strong><span><a>'));
if(empty($subtitle)) {
delete_post_meta($post_id, 'subtitle');
} else {
update_post_meta($post_id, 'subtitle', $subtitle);
}
}
}
}
add_action('init', array(new Subtitle_Meta_Handler(), 'initialize'));
Mam nadzieję, że coś takiego wkrótce zostanie dodane do rdzenia.