У меня проблемы с сохранением данных из созданного мной метабокса. Этот метабокс позволяет создавать новые формы, нажимая кнопки «adicionar dia» и «adicionar local».
Ниже приведен полный код функции, которая сохраняет данные метабокса (я полагаю, что ошибка в эта функция), а также части кода функции, которая создает метабокс (я не поместил весь код, потому что он слишком большой).
Я ценю любую помощь
<?php
//save
add_action('save_post', 'save_regular_post_meta', 1);
function save_regular_post_meta($post_id){
// verify nonce
if ( isset($_POST['regular_cpt_nonce']) && !wp_verify_nonce( $_POST['regular_cpt_nonce'], basename(__FILE__) ) ) return;
// check autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// check permissions and verify if this is our post type saving.
if ( get_post($post_id)->post_type != 'regular' ) {
return;
} elseif (!current_user_can('edit_post', $post_id)) {
return;
}
$meta_data = array(
'Local' => array(
'value' => isset($_POST['locais']),
'name' => 'locais'
)
);
$lista_de_locais = $meta_data['Local']['value'];
if ( is_array($lista_de_locais) && !empty($lista_de_locais) ) {
sort($lista_de_locais);
if ( is_array($lista_de_locais['horarios']) && !empty($lista_de_locais['horarios']) ) {
sort($lista_de_locais['horarios']);
}
}
foreach ($meta_data as $data) {
update_post_meta($post_id, $data['name'], $data['value']);
}
}
?>
Это часть кода функции, которая создает метабокс
<?php
function regular_get_post_meta_turmas() {
global $post;
$locais = get_post_meta($post -> ID, 'locais', false);
$fields = array(
'local' => 'Nome do local',
'endereco' => 'Endereço',
);
$horariosfields = array(
'dias',
'hora_i',
'hora_f'
);
$dayfields = array(
'seg' => '0seg',
'ter' => '1ter',
);
$local_count = 0;
$days_count = array();
?><ol>
<?php foreach ( (array)$locais as $local ) { ?>
<li>
<fieldset class="field locais"><label>Local de Evento</label>
<table class="info">
<?php foreach ($fields as $name => $label) { ?>
<tr>
<td>
<label for="local_<?php echo $local_count; ?>_<?php echo $name; ?>"><?php echo $label; ?></label>
</td>
<td>
<input
id="local_<?php echo $local_count; ?>_<?php echo $name; ?>"
type="text"
name="locais[<?php echo $local_count; ?>][<?php echo $name; ?>]"
value="<?php if ( (!empty($local)) && (is_array($local)) ) echo $local[$name]; ?>"
class="<?php echo $name; ?>">
</td>
</tr>
<?php } ?>
</table>
<?php $days_count[$local_count] = 0; ?>
<?php if ( (!empty($local)) && (is_array($local)) ) { ?>
<?php foreach ( (array)$local['horarios'] as $date_and_time ) { ?>
<fieldset class="field locais-horario-dia"><label>Dias da semana / Horário</label>
<table class="days">
<tr>
<td>
<label for="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_dia">Dias da semana</label>
</td>
<td>
<?php foreach ( $dayfields as $name => $value ) { ?>
<div class="checkbox"><input
id="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_dia_<?php echo $name; ?>"
type="checkbox"
name="locais[<?php echo $local_count; ?>][horarios][<?php echo $days_count[$local_count]; ?>][dias][<?php echo $name; ?>]"
value="<?php echo $value; ?>"
<?php if ( isset($date_and_time['dias'][$name]) && $value == $date_and_time['dias'][$name] ) echo 'checked'; ?>
><label for="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_dia_<?php echo $name; ?>"><?php echo $name; ?></label></div>
<?php } ?>
</td>
</tr>
<tr>
<td>
<label for="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_hora_i">Horário de início</label>
</td>
<td>
<input
id="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_hora_i"
type="text"
name="locais[<?php echo $local_count; ?>][horarios][<?php echo $days_count[$local_count]; ?>][hora_i]"
value="<?php echo $date_and_time['hora_i']; ?>"
class="hora_i"
>
</td>
</tr>
<tr>
<td>
<label for="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_hora_f">Horário de término</label>
</td>
<td>
<input
id="local_<?php echo $local_count; ?>_horarios_<?php echo $days_count[$local_count]; ?>_hora_f"
type="text"
name="locais[<?php echo $local_count; ?>][horarios][<?php echo $days_count[$local_count]; ?>][hora_f]"
value="<?php echo $date_and_time['hora_f']; ?>"
class="hora_f"
>
</td>
</tr>
<tr>
<td>
<button class="btn del_day">Remover dia</button>
</td>
</tr>
<?php $days_count[$local_count] += 1; ?>
</table>
</fieldset>
<?php } ?>
<?php } ?>
<button class="btn add_day" index="<?php echo $local_count; ?>">Adicionar dia</button>
<button class="btn del_local">Remover local</button>
</fieldset>
</li>
<?php $local_count += 1; ?>
<?php } ?>
</ol>
<button class="btn add_local">Adicionar local</button>
<?php
}
?>