私はワードプレスのメタボックスを作成していますが、メタボックスのhtml部分が保存機能をどのように見つけているのか疑問に思っていました.Hereは、私が使用しているコード全体です.
<?php
function true_add_a_metabox() {
add_meta_box(
'true_metabox', // metabox ID, it also will be it id HTML attribute
'The Detailed Custom Meta Box', // title
'true_display_metabox', // this is a callback functions, which will be print HTML of our metabox
'post', // post type
'normal', // position of the screen where metabox shoul be displayed (normal, side, advanced)
'default' // priority over another metaboxes on this page (default, low, high, core)
);
}
add_action( 'admin_menu', 'true_add_a_metabox' );
function true_display_metabox($post) {
/*
* needs for security checks
*/
wp_nonce_field( basename( __FILE__ ), 'true_metabox_nonce' );
/*
* lets add a simple textarea field
*/
$html .= '<p><label>SEO title <input type="text" name="seotitle" value="' . get_post_meta($post->ID, 'true_title',true) . '" /></label></p>';
/*
* add a checkbox
*/
$html .= '<p><label><input type="checkbox" name="noindex"';
$html .= (get_post_meta($post->ID, 'true_noindex',true) == 'on') ? ' checked="checked"' : '';
$html .= ' /> Turn of page visibility for search engines</label></p>';
/*
* print all of this
*/
echo $html;
}
function true_save_post_meta( $post_id, $post ) {
/*
* Security checks
*/
if ( !isset( $_POST['true_metabox_nonce'] ) || !wp_verify_nonce( $_POST['true_metabox_nonce'], basename( __FILE__ ) ) )
return $post_id;
/*
* Check current user permissions
*/
$post_type = get_post_type_object( $post->post_type );
if ( !current_user_can( $post_type->can->edit_post, $post_id ) )
return $post_id;
/*
* Check if the autosave
*/
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
if ($post->post_type == 'post') { // define your own post type here
update_post_meta($post_id, 'true_title', esc_attr($_POST['seotitle']));
update_post_meta($post_id, 'true_noindex', $_POST['noindex']);
}
return $post_id;
}
add_action( 'save_post', 'true_save_post_meta', 10, 2 );
?>
html を生成する関数には、どのオプションが保存されるかtrue_display_metabox
についての言及はありませんtrue_save_post_meta
。このメタボックスがデータを保存する方法を説明できる人はいますか?