Cá nhân, tôi thích làm theo mẫu dưới đây để thêm trình xử lý meta tùy chỉnh vào các loại bài đăng. Với phần bên dưới, bạn có thể thêm hỗ trợ meta vào loại bài đăng bằng cách chỉ thêm khóa hỗ trợ ('phụ đề' trong ví dụ bên dưới) vào mảng hỗ trợ cho loại bài đăng bằng cách gọi add_post_type_support ('my_post_type', 'phụ đề');
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'));
Hy vọng một cái gì đó như thế này sẽ sớm được thêm vào cốt lõi.