0
我需要复制一组“自定义字段”,以便用户可以插入多个方向,搜索后没有发现任何东西,完全服务于我自己决定要做的事情,但我有一个问题:生成自定义字段不保存
该字段生成我并完美地保存了我,但它们中的内容保存未保存且不会发生,如果您可以帮助我,我感谢您!
我有一个字段来存储你想要的地址并保存它,通过输入值检测循环并生成。
代码:
//产生场
<
?php
add_action('admin_init', 'profesional_meta_boxes');
function profesional_meta_boxes() {
add_meta_box('profesional-meta-box', __('Datos de Interés'), 'profesional_meta_box_callback', 'profesionales', 'normal', 'high', array('arg' => 'value'));
}
// datos internos en el metabox
function profesional_meta_box_callback($post) {
//El nonce es opcional pero recomendable. Vea http://codex.wordpress.org/Function_Reference/wp_nonce_field
wp_nonce_field('profesionales_meta_box', 'profesionales_meta_box_noncename');
//Obtenermos los meta data actuales para rellenar los custom fields
//en caso de que ya tenga valores
$post_meta = get_post_custom($post->ID);
?>
<?php
//Número de direcciones
$current_value = '1';
if(isset($post_meta['num-direction'][0])) {
$current_value = $post_meta['num-direction'][0];
}
?>
<div style="width: 100%; display: inline-block; vertical-align: top;">
<p>Número de direcciones</p>
<p style="width: 100%">
<?php
$value_dir = $current_value;
?>
<input class="num-direction" name="num-direction" type="text" readonly value="<?php echo $current_value; ?>">
<button class="add-direction">+</button>
<button class="remove-direction">-</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
<script>
$('.add-direction').on('click', function(ev) {
ev.preventDefault();
var val_dir = $('.num-direction').val();
val_dir++;
$('.num-direction').val(val_dir);
});
$('.remove-direction').on('click', function(ev) {
ev.preventDefault();
var val_dir = $('.num-direction').val();
val_dir--;
$('.num-direction').val(val_dir);
});
</script>
</p>
</div>
<?php for ($i=1; $i <= $value_dir; $i++) { ?>
<div style="border: 2px solid #ededed;padding: 20px;margin: 20px 0;">
<h2 style="padding: 0 0 15px 0; font-weight: bold;">Dirección <?php echo $i; ?></h2>
<?php
//DESCRIPCIÓN
$name_desc_zona_trabajo = 'desc-zona-trabajo'.$i;
$current_value = '';
if(isset($post_meta['$name_desc_zona_trabajo'][0])) {
$current_value = $post_meta['$name_desc_zona_trabajo'][0];
}
?>
<div style="width: 45%; display: inline-block; vertical-align: top;clear:;">
<p>Descripción zona de trabajo</p>
<p style="width: 100%; display: inline-block;">
<textarea style="width: 90%;" name="<?php echo $name_desc_zona_trabajo ?>" cols="30" rows="10"><?php echo $current_value; ?></textarea>
</p>
</div>
</div>
<?php } ?>
<?php
}
//SAVE FIELDS
<?php
add_action('save_post', 'profesional_save_custom_fields');
function profesional_save_custom_fields($post_id){
// Primero comprobamos que el usuario actual tenga permiso para editar el post
if (isset($_POST['post_type']) && 'post' == $_POST['post_type']) {
if (!current_user_can('edit_post', $post_id)) {
return;
}
}
// Segundo, comprobamos el nonce como medida de seguridad
if (!isset($_POST['profesionales_meta_box_noncename']) || ! wp_verify_nonce($_POST['profesionales_meta_box_noncename'], 'profesionales_meta_box')) {
return;
}
//Num direction
if(isset($_POST['num-direction']) && $_POST['num-direction'] != "") {
update_post_meta($post_id, 'num-direction', sanitize_text_field($_POST['num-direction']));
//OBTENGO EL VALOR DE EL NUMERO DE DIRECCIONES PARA EL BUCLE
$value_dir = $_POST['num-direction'];
} else {
$value_dir = $_POST['num-direction'];
//$_POST['text_meta_field'] no tiene valor establecido, eliminar el meta field de la base de datos
if (isset($post_id)) {
delete_post_meta($post_id, 'num-direction');
}
}
//BUCLE PARA GUARDAR DINAMICAMENTE DEPENDIENDO DE LOS CAMPOS QUE CREE EL USUARIO
for ($i=1; $i <= $value_dir; $i++) {
//Descripción Zona de Trabajo
//Nombre dependiendo de su posición
$name_desc_zona_trabajo = 'desc-zona-trabajo'.$i;
if(isset($_POST[$name_desc_zona_trabajo]) && $_POST[$name_desc_zona_trabajo] != "") {
update_post_meta($post_id, $name_desc_zona_trabajo, sanitize_text_field($_POST[$name_desc_zona_trabajo]));
} else {
//$_POST['text_meta_field'] no tiene valor establecido, eliminar el meta field de la base de datos
if (isset($post_id)) {
delete_post_meta($post_id, $name_desc_zona_trabajo);
}
}
}
}
?>
Saludos!