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