生成自定义字段未保存

时间:2016-06-16 08:47:56

标签: php post types field

我需要复制一组自定义字段'所以用户可以插入多个方向,搜索后发现什么都没有为我自己决定自己做的事情提供服务,但我有一个问题:

这些字段是我生成的并且完美地保存了我,但是他们保存的内容没有保存而且没有发生,如果你能帮助我的话我感谢你!!

我有一个字段可以存储你想要的多个地址,并保存它通过输入值检测循环并生成。

代码:

//生成字段

<

?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!

1 个答案:

答案 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];