Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/01/2015, 14:36
Gothgauss
 
Fecha de Ingreso: marzo-2009
Mensajes: 395
Antigüedad: 15 años, 1 mes
Puntos: 11
Intentando crear metabox

Buenas, estoy intentando crear un metabox.

He conseguido que el metabox aparezca cuando estoy creando una nueva entrada, pero lo que no consigo es que pueda guardarla.

Al guardar las entradas, los input text salen como array, y en los select sale siempre la primera opcion como la guardada y no la elegida.

¿Qué puede estar mal? Aqui mi código

Código:
//Custom Theme Settings
// La función para crear un Custom Post Type


add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add()
{
    add_meta_box( 'my-meta-box-id', 'My First Meta Box', 'cd_meta_box_cb', 'post', 'normal', 'high' );
}
?>

<?php

add_action( 'save_post', 'cd_meta_box_save' );


function cd_meta_box_save( $post_id )
{
    // Bail if we're doing an auto save
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
     
    // if our nonce isn't there, or we can't verify it, bail
    if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
     
    // if our current user can't edit this post, bail
    if( !current_user_can( 'edit_post' ) ) return;
     
    // now we can actually save the data
    $allowed = array( 
        'a' => array( // on allow a tags
            'href' => array() // and those anchors can only have href attribute
        )
    );
     
    // Make sure your data is set before trying to save it
    if( isset( $_POST['my_meta_box_text'] ) )
        update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) );
		   if( isset( $_POST['my_meta_box_desarrollador'] ) )
        update_post_meta( $post_id, 'my_meta_box_desarrollador', wp_kses( $_POST['my_meta_box_desarrollador'], $allowed ) );
		 if( isset( $_POST['my_meta_box_editor'] ) )
        update_post_meta( $post_id, 'my_meta_box_editor', wp_kses( $_POST['my_meta_box_editor'], $allowed ) );
		
		 if( isset( $_POST['my_meta_box_distribuidor'] ) )
        update_post_meta( $post_id, 'my_meta_box_distribuidor', wp_kses( $_POST['my_meta_box_distribuidor'], $allowed ) );
		 if( isset( $_POST['my_meta_box_jugadores'] ) )
        update_post_meta( $post_id, 'my_meta_box_jugadores', wp_kses( $_POST['my_meta_box_jugadores'], $allowed ) );
		
			 if( isset( $_POST['my_meta_box_voces'] ) )
        update_post_meta( $post_id, 'my_meta_box_voces', wp_kses( $_POST['my_meta_box_voces'], $allowed ) );
		
		 if( isset( $_POST['my_meta_box_textos'] ) )
        update_post_meta( $post_id, 'my_meta_box_textos', wp_kses( $_POST['my_meta_box_textos'], $allowed ) );
		if( isset( $_POST['my_meta_box_lanzamiento'] ) )
        update_post_meta( $post_id, 'my_meta_box_lanzamiento', wp_kses( $_POST['my_meta_box_lanzamiento'], $allowed ) );
		
       // para select 
    if( isset( $_POST['my_meta_box_consola'] ) )
        update_post_meta( $post_id, 'my_meta_box_consola', esc_attr( $_POST['my_meta_box_consola'] ) );
		    if( isset( $_POST['my_meta_box_genero'] ) )
        update_post_meta( $post_id, 'my_meta_box_genero', esc_attr( $_POST['my_meta_box_genero'] ) );
		
		   if( isset( $_POST['my_meta_box_formato'] ) )
        update_post_meta( $post_id, 'my_meta_box_formato', esc_attr( $_POST['my_meta_box_formato'] ) );
		
			   if( isset( $_POST['my_meta_box_online'] ) )
        update_post_meta( $post_id, 'my_meta_box_online', esc_attr( $_POST['my_meta_box_online'] ) );
		
		  if( isset( $_POST['my_meta_box_pegi'] ) )
        update_post_meta( $post_id, 'my_meta_box_pegi', esc_attr( $_POST['my_meta_box_pegi'] ) );
		
         
}




function cd_meta_box_cb()
{
    // $post is already set, and contains an object: the WordPress post
    global $post;
    $values = get_post_custom( $post->ID );
	$consola = isset( $values['my_meta_box_consola'] ) ? esc_attr( $values['my_meta_box_consola'] ) : '';
	$genero = isset( $values['my_meta_box_genero'] ) ? esc_attr( $values['my_meta_box_genero'] ) : '';
	$desarrollador = isset( $values['my_meta_box_desarrollador'] ) ? $values['my_meta_box_desarrollador'] : '';
	$editor = isset( $values['my_meta_box_editor'] ) ? $values['my_meta_box_editor'] : '';
	$distribuidor = isset( $values['my_meta_box_distribuidor'] ) ? $values['my_meta_box_distribuidor'] : '';
	$formato = isset( $values['my_meta_box_formato'] ) ? esc_attr( $values['my_meta_box_formato'] ) : '';
	$jugadores = isset( $values['my_meta_box_jugadores'] ) ? $values['my_meta_box_jugadores'] : '';
	$online = isset( $values['my_meta_box_online'] ) ? esc_attr( $values['my_meta_box_online'] ) : '';
    $voces = isset( $values['my_meta_box_voces'] ) ? $values['my_meta_box_voces'] : '';
    $textos = isset( $values['my_meta_box_textos'] ) ? $values['my_meta_box_textos'] : '';
    $lanzamiento = isset( $values['my_meta_box_lanzamiento'] ) ? $values['my_meta_box_lanzamiento'] : '';
	$pegi = isset( $values['my_meta_box_pegi'] ) ? esc_attr( $values['my_meta_box_pegi'] ) : '';
     
    // We'll use this nonce field later on when saving.
    wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
    ?>
        
    <p>
        <label for="my_meta_box_consola">Consola</label>
        <select name="my_meta_box_consola" id="my_meta_box_consola">
            <option value="PS4" <?php selected( $selected, 'PS4' ); ?>>PS4</option>
            <option value="PS3" <?php selected( $selected, 'PS3' ); ?>>PS3</option>
			<option value="PSVITA" <?php selected( $selected, 'PSVITA' ); ?>>PSVITA</option>
        </select>
    </p>
	    <p>
        <label for="my_meta_box_genero">Género</label>
        <select name="my_meta_box_genero" id="my_meta_box_genero">
            <option value="PS4" <?php selected( $selected, 'PS4' ); ?>>PS4</option>
            <option value="PS3" <?php selected( $selected, 'PS3' ); ?>>PS3</option>
			<option value="PSVITA" <?php selected( $selected, 'PSVITA' ); ?>>PSVITA</option>
        </select>
    </p>
	<p>
        <label for="my_meta_box_desarrollador">Desarrollador</label>
        <input type="text" name="my_meta_box_desarrollador" id="my_meta_box_desarrollador" value="<?php echo $desarrollador; ?>" />
    </p>
	<p>
        <label for="my_meta_box_editor">Editor</label>
        <input type="text" name="my_meta_box_editor" id="my_meta_box_editor" value="<?php echo $editor; ?>" />
    </p>
	<p>
        <label for="my_meta_box_distribuidor">Distribuidor</label>
        <input type="text" name="my_meta_box_distribuidor" id="my_meta_box_distribuidor" value="<?php echo $distribuidor; ?>" />
    </p>
	<p>
        <label for="my_meta_box_formato">Formato</label>
        <select name="my_meta_box_formato" id="my_meta_box_formato">
            <option value="Físico" <?php selected( $selected, 'Físico' ); ?>>Físico</option>
            <option value="Digital" <?php selected( $selected, 'Digital' ); ?>>Digital</option>
			<option value="Físico y digital" <?php selected( $selected, 'Físico y digital' ); ?>>Físico y digital</option>
        </select>
    </p>
	<p>
        <label for="my_meta_box_jugadores">Jugadores</label>
        <input type="text" name="my_meta_box_jugadores" id="my_meta_box_jugadores" value="<?php echo $jugadores; ?>" />
    </p>
	<p>
        <label for="my_meta_box_online">¿Online?</label>
       <select name="my_meta_box_online" id="my_meta_box_online">
            <option value="Sí" <?php selected( $selected, 'Sí' ); ?>>Sí</option>
            <option value="No" <?php selected( $selected, 'No' ); ?>>No</option>
        </select>
    </p>
     <p>
        <label for="my_meta_box_voces">Voces</label>
        <input type="text" name="my_meta_box_voces" id="my_meta_box_voces" value="<?php echo $voces; ?>" />
    </p>
	<p>
        <label for="my_meta_box_textos">Textos</label>
        <input type="text" name="my_meta_box_textos" id="my_meta_box_textos" value="<?php echo $textos; ?>" />
    </p>
	<p>
        <label for="my_meta_box_lanzamiento">Lanzamiento</label>
        <input type="text" name="my_meta_box_lanzamiento" id="my_meta_box_lanzamiento" value="<?php echo $lanzamiento; ?>" />
    </p>
  <p>
        <label for="my_meta_box_pegi">Pegi</label>
       <select name="my_meta_box_pegi" id="my_meta_box_pegi">
            <option value="12" <?php selected( $selected, '12' ); ?>>12</option>
            <option value="16" <?php selected( $selected, '16' ); ?>>16</option>
			<option value="18" <?php selected( $selected, '18' ); ?>>18</option>
        </select>
    </p>
    <?php    
}
?>