Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2011, 12:15
Avatar de Nekko
Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 8 meses
Puntos: 656
Custom fields se pierden con los autosaves

Buenas!!!

Estoy creando un tipo de producto (en un custom post type) que requiere de custom fields para ingresar determinada información.

Todo funciona perfectamente, pero cuando hay un autosave se borra el contenido de "tipodeproducto", "precios" y "hotfeatures", mis custom fields.


Código PHP:
Ver original
  1. add_action('init', 'licencias_register');
  2.  
  3. function licencias_register() {
  4.  
  5.     $labels = array(
  6.         'name' => _x('Licencias', 'Post type'),
  7.         'singular_name' => _x('Licencia', 'Nombre singular del post type'),
  8.         'add_new' => _x('Añadir', 'agregar licencia'),
  9.         'add_new_item' => __('Añadir licencia'),
  10.         'edit_item' => __('Editar licencia'),
  11.         'new_item' => __('Nueva licencia'),
  12.         'view_item' => __('Ver licencia'),
  13.         'search_items' => __('Buscar en licencias'),
  14.         'not_found' =>  __('Nada encontrado'),
  15.         'not_found_in_trash' => __('Nada encontrado en la papelera'),
  16.         'parent_item_colon' => ''
  17.     );
  18.  
  19.     $args = array(
  20.         'labels' => $labels,
  21.         'public' => true,
  22.         'publicly_queryable' => true,
  23.         'show_ui' => true,
  24.         'query_var' => true,
  25.         'menu_icon' => get_stylesheet_directory_uri() . '/images/icono.png',
  26.         'rewrite' => true,
  27.         'capability_type' => 'post',
  28.         'hierarchical' => false,
  29.         'menu_position' => null,
  30.         'supports' => array('title','editor','thumbnail')
  31.       );
  32.  
  33.     register_post_type( 'licencia' , $args );
  34. }
  35.  
  36.  
  37. add_action("admin_init", "admin_init");
  38.  
  39. function admin_init(){
  40.   add_meta_box("licencia_meta", "Información adicional", "licencia_meta", "licencia", "normal", "low");
  41. }
  42.  
  43. function licencia_meta() {
  44.   global $post;
  45.   $custom = get_post_custom($post->ID);
  46.   $tipodeproducto = $custom["tipodeproducto"][0];
  47.   $precios = $custom["precios"][0];
  48.   $hotfeatures = $custom["hotfeatures"][0];
  49.   ?>
  50.   <p><label>Tipo de producto:</label><br />
  51.   <textarea cols="50" rows="1" name="tipodeproducto"><?php echo $tipodeproducto; ?></textarea></p>
  52.   <p><label>Precios:</label><br />
  53.   <textarea cols="50" rows="2" name="precios"><?php echo $precios; ?></textarea></p>
  54.   <p><label>Hot features (listas HTML):</label><br />
  55.   <textarea cols="50" rows="5" name="hotfeatures"><?php echo $hotfeatures; ?></textarea></p>
  56.   <?php
  57. }
  58.  
  59.  
  60. add_action('save_post', 'save_details');
  61.  
  62. function save_details(){
  63.   global $post;
  64.   update_post_meta($post->ID, "tipodeproducto", $_POST["tipodeproducto"]);
  65.   update_post_meta($post->ID, "precios", $_POST["precios"]);
  66.   update_post_meta($post->ID, "hotfeatures", $_POST["hotfeatures"]);
  67. }

Leí sobre el problema en varios lados y la única solución que me pareció que podía andar.. no resultó:
http://wordpress.org/support/topic/c...n-disappearing

Así que momentáneamente puse un tiempo de autosave larguiiiiisimo, pero no es una solución aceptable, sino algo para salir del paso.

Alguien tiene alguna idea al respecto?
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP