Meta Box não salvando

Estou seguindo o tutorial de Noel Tock em fazer um Event CPT e, até agora, eu consegui mostrar as colunas personalizadas e a checkbox de meta personalizada.

O problema agora é que não consigo salvar os dados dentro da meta checkbox. Estou confuso porque descobri que quando eu pressionar o botão de atualização, os valores não permanecerão nos campos e não refletirão nas colunas personalizadas. O código é similar ao tutorial.

As colunas personalizadas:

function events_custom_columns($column){ global $post; $custom = get_post_custom(); switch($column){ case 'event_col_type': $eventcats = get_the_terms($post->ID, 'event_type'); $ev_cat_html = array(); if($eventcats){ foreach($eventcats as $eventcat) array_push($ev_cat_html, $eventcat->name); echo implode($ev_cat_html, ', '); } else { echo 'None'; } break; case 'event_date': $start = $custom['event_start_date'][0]; $end = $custom['event_end_date'][0]; $startdate = date('F j, Y', $start); $enddate = date('F j, Y', $end); echo $startdate . '
' . $enddate . ''; break; case 'event_time': $time_formtt = get_option('time_format'); $starttime = $custom['event_start_date'][0]; $endtime = $custom['event_end_date'][0]; $startT = date($time_formtt, $starttime); $endT = date($time_formtt, $endtime); echo $startT . ' - ' . $endT; break; case 'event_location': echo $custom['event_location'][0]; break; }

}

A meta checkbox personalizada: add_action (‘admin_init’, ‘events_admin_init’);

 function events_admin_init(){ add_meta_box('event_meta', 'Event Details', 'event_details_meta', 'events', 'normal', 'default'); } function event_details_meta(){ global $post; $custom = get_post_custom($post->ID); $meta_SDate = $custom['event_start_date'][0]; $meta_EDate = $custom['event_end_date'][0]; $meta_STime = $meta_SDate; $meta_ETime = $meta_EDate; $time_format = get_option('time_format'); if($meta_SDate == null){ $meta_SDate = time(); $meta_EDate = $meta_SDate; $meta_STime = 0; $meta_ETime = 0; } $sd = date("D, M d, Y", $meta_SDate); $ed = date("D, M d, Y", $meta_EDate); $st = date($time_format, $meta_STime); $et = date($time_format, $meta_ETime); echo '"'; ?> 
  • <input name = "event_start_date" class = "dp_date" value = ""
  • <input name = "event_end_date" class = "dp_date" value = ""
  • <input name = "event_start_time" value = ""
  • <input name = "event_end_time" value = ""
<?php }

Aqui está a function de salvar:

 add_action('save_post', 'save_events_deets'); function save_events_deets(){ global $post; if(!wp_verify_nonce1($_POST['events_nonce1'], 'events_nonce1')) { return $post -> ID;} if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if(!current_user_can('edit_post', $post -> ID)) { return $post -> ID;} if(!isset($_POST['event_start_date'])){ return $post; } $updStartD = strtotime($_POST['event_start_date'] . $_POST['event_start_time']); update_post_meta($post -> ID, 'event_start_date', $updStartD); if(!isset($_POST['event_end_date'])){ return $post; } $updEndD = strtotime($_POST['event_end_date'] . $_POST['event_end_time']); update_post_meta($post -> ID, 'event_end_date', $updEndD); } 

Solutions Collecting From Web of "Meta Box não salvando"

Como você está usando valores únicos de qualquer maneira, que tal tentar apenas:

 $meta_SDate = get_post_meta($post->ID,'event_start_date',true); $meta_EDate = get_post_meta($post->ID,'event_end_date',true); 

Observe também que as seguintes linhas precisarão de um espaço para separar os valores postados, portanto, o strtotime pode funcionar corretamente:

 $updStartD = strtotime(trim($_POST['event_start_date']) . ' ' . trim($_POST['event_start_time'])); $updEndD = strtotime(trim($_POST['event_end_date']) . ' ' . trim($_POST['event_end_time'])); 

Eu adicionei trim para remover espaços brancos esquerdo e direito apenas no caso também.