
09/01/2015, 14:36
|
| | Fecha de Ingreso: marzo-2009
Mensajes: 395
Antigüedad: 16 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
}
?>
|