Các ảnh chụp màn hình được đăng trong câu trả lời đó đã được tạo bằng cách sử dụng register_meta_box_cb
đối số có sẵn cho các loại bài đăng tùy chỉnh.
register_meta_box_cb phải chỉ định chức năng gọi lại có chứa mã cho hộp meta.
Để tạo hộp meta, bạn có thể sử dụng chức năng WordPress tích hợp trong add_meta_box , cũng yêu cầu chức năng lưu dữ liệu đã nhập khi bài đăng được lưu.
Dưới đây là một số mã ví dụ mà tôi đã tạo để thêm 2 hộp meta tùy chỉnh vào loại bài đăng danh mục đầu tư mà tôi sử dụng trên trang web cá nhân của mình.
Loại bài đăng "Dự án" tôi tạo có chứa đối số này:
'register_meta_box_cb' => 'c3m_project_meta',
Hàm đầu tiên bên dưới là hàm gọi lại cho register_meta_box_cb. 2 mục sau xuất html cho các hộp meta trên trang thêm bài và 2 cuối lưu dữ liệu đã nhập.
function c3m_project_meta() {
add_meta_box('_c3m_project_url', __('Enter Website Url') , 'c3m_project_url', 'project', 'side', 'low');
add_meta_box('_c3m_project_work', __('Enter Work Done on Project') , 'c3m_project_work', 'project', 'side', 'low');
}
function c3m_project_url($post) {
global $post;
echo '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
$projecturl = get_post_meta($post->ID, '_projecturl', true);
echo '<input type="text" name="_projecturl" value="' . $projecturl . '" class="widefat" />' ;
}
function c3m_project_work($post) {
global $post;
echo '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
$projectwork = get_post_meta($post->ID, '_projectwork', true);
echo '<input type="text" name="_projectwork" value="' . $projectwork . '" class="widefat" />' ;
}
add_action('admin_init', 'c3m_project_meta');
function c3m_save_project_meta( $post_id , $post ) {
if ( !wp_verify_nonce( $_POST [ 'banner-buttonmeta_noncename' ], plugin_basename( __FILE__ ) )) { return $post ->ID;
}
if ( !current_user_can( 'edit_post' , $post ->ID )) return $post ->ID;
$c3m_projecturl [ '_projecturl' ] = $_POST [ '_projecturl' ];
foreach ( $c3m_projecturl as $key => $value ) {
if ( $post ->post_type == 'revision' ) return ;
$value = implode( ',' , ( array ) $value );
if (get_post_meta( $post ->ID, $key , FALSE)) {
update_post_meta( $post ->ID, $key , $value ); } else {
add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key );
}
$c3m_projectwork [ '_projectwork' ] = $_POST [ '_projectwork' ];
foreach ( $c3m_projectwork as $key => $value ) {
if ( $post ->post_type == 'revision' ) return ;
$value = implode( ',' , ( array ) $value );
if (get_post_meta( $post ->ID, $key , FALSE)) {
update_post_meta( $post ->ID, $key , $value ); } else {
add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key );
}
}
add_action( 'save_post' , 'c3m_save_project_meta' , 1, 2);