Hi I followed this yt tutorial and have tried making a custom input field for my custom post type 'Events'. I am able to render the meta box and the < input type="date" > but wp can't seem to save the date after updating the post. Im still pretty new to WP so I can't tell where I'm going wrong. Here's my code:
//custom fields meta box
function event_post_date_meta_box(){
add_meta_box('event_date', 'Add Event Date', 'event_post_date_callback', 'event', 'normal', 'high');
}
function event_post_date_callback( $post ){
wp_nonce_field('save_event_post_date', 'event_post_date_nonce');
$value = get_post_meta($post->ID, '_event_post_date_value_key', true);
echo '<lable for="event_post_post_date_field"> Event Date: </lable>';
echo '<input type="date" id="event_post_post_date_field" name="event_post_post_date_field" value="'. esc_attr($value) .'" size="25" />';
}
add_action('add_meta_boxes','event_post_date_meta_box');
function event_post_date_save($post_id) {
if( ! isset ($_POST['event_post_date_nonce'])){
return;
}
if( ! wp_verify_nonce($POST['event_post_date_nonce'], 'event_post_date_save')) {
return;
}
if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
return;
}
if ( ! current_user_can('edit_post', $post_id)){
return;
}
if( ! isset($_POST['event_post_post_date_field'])){
return;
}
$event_date_data = $_POST['event_post_post_date_field'];
update_post_meta( $post_id, '_event_post_date_value_key', $event_date_data );
}
add_action( 'save_post', 'event_post_date_save');
I can see some issues with the code
wp_nonce_field('save_event_post_date', 'event_post_date_nonce');
It will verify the nonce
if( ! wp_verify_nonce($POST['event_post_date_nonce'], 'event_post_date_save'))
'save_event_post_date'
not equals 'event_post_date_save'
Change wp_nonce_field('save_event_post_date', 'event_post_date_nonce');
to wp_nonce_field('event_post_date_save', 'event_post_date_nonce');
Also here if( ! wp_verify_nonce($POST['event_post_date_nonce'], 'event_post_date_save'))
the method $POST
must be $_POST
Here is your full code after fixes:
//custom fields meta box
function event_post_date_meta_box(){
add_meta_box('event_date', 'Add Event Date', 'event_post_date_callback', 'event', 'normal', 'high');
}
function event_post_date_callback( $post ){
wp_nonce_field('event_post_date_save', 'event_post_date_nonce');
$value = get_post_meta($post->ID, '_event_post_date_value_key', true);
echo '<lable for="event_post_post_date_field"> Event Date: </lable>';
echo '<input type="date" id="event_post_post_date_field" name="event_post_post_date_field" value="'. esc_attr($value) .'" size="25" />';
}
add_action('add_meta_boxes','event_post_date_meta_box');
function event_post_date_save($post_id) {
if( ! isset ($_POST['event_post_date_nonce'])){
return;
}
if( ! wp_verify_nonce($_POST['event_post_date_nonce'], 'event_post_date_save')) {
return;
}
if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
return;
}
if ( ! current_user_can('edit_post', $post_id)){
return;
}
if( ! isset($_POST['event_post_post_date_field'])){
return;
}
$event_date_data = $_POST['event_post_post_date_field'];
update_post_meta( $post_id, '_event_post_date_value_key', $event_date_data );
}
add_action( 'save_post', 'event_post_date_save');