El siguiente post es debido a un pequeño problema al crear un Custom Post Type o Custom Meta Box, que cuando creamos un post, noticia y otro, los campos se borran solos cuando salimos del formulario o cuando se realiza el autosave de wordpress.
Un ejemplo de un Custom Post Type en nuestro functions.php :
add_action('init', 'texto');
function texto() {
$labels = array(
'name' => _x('texto', 'post type general name'),
'singular_name' => _x('texto', 'post type singular name'),
'add_new' => _x('Agregar Nuevo', 'texto'),
'add_new_item' => __('Agregar Nuevo texto'),
'edit_item' => __('Editar texto'),
'new_item' => __('Nuevo texto'),
'view_item' => __('Ver texto'),
'search_items' => __('Buscar texto'),
'not_found' => __('Nada encontrado'),
'not_found_in_trash' => __('Nada encontrado en papelera'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => true,
'menu_position' => null,
'rewrite' => true,
'has_archive' => true,
'supports' => array('title','editor', 'excerpt','thumbnail','comments','author','page-attributes')
);
register_post_type( 'texto' , $args );
}
function admin_init(){
add_meta_box("opcion", "Opcion", "opcion", "texto", "normal", "low");
}
function opcion(){
global $post;
$custom = get_post_custom($post->ID);
$texto= $custom["texto"][0];
?>
Texto: < input name="texto" type="text" id="texto" value="texto; ?>" />
}
add_action('save_post', 'save_opcion');
function save_opcion(){
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
global $post;
update_post_meta($post->ID, "opcion", $_POST["texto"]);
}
Basta con incluir las siguiente 2 lineas en nuestro código:
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
Estas se ejecutan cuando oprimimos el botón de publicar o cuando se realiza el autosave de wordpress.