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


