我需要复制一组自定义字段'所以用户可以插入多个方向,搜索后发现什么都没有为我自己决定自己做的事情提供服务,但我有一个问题:
这些字段是我生成的并且完美地保存了我,但是他们保存的内容没有保存而且没有发生,如果你能帮助我的话我感谢你!!
我有一个字段可以存储你想要的多个地址,并保存它通过输入值检测循环并生成。
代码:
//生成字段
<
?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!
答案 0 :(得分:0)
解!!!!
在生成字段的部分中,如何使用变量创建字段,他必须采用包含数组中变量的引号:
//DESCRIPCIÓN
$name_desc_zona_trabajo = 'desc-zona-trabajo'.$i;
$current_value = '';
------------------ COMILLAS ----------------------
if( isset( $post_meta[$name_desc_zona_trabajo][0] ) ) {
$current_value = $post_meta[$name_desc_zona_trabajo][0];