WordPress : La métabox de texte personnalisée dans la page-admin ne sera pas enregistrée
J’ai ajouté une méta-boîte personnalisée pour coller un code court de curseur dans mon administrateur de page… J’essaie d’enregistrer ma méta-boîte personnalisée depuis des heures maintenant. Mais pour d’une certaine manière, cela ne fonctionne pas. Je pourrais jurer que mon code est correct, mais ce n’est probablement pas le cas… Quelqu’un peut-il m’aider s’il vous plaît ? Ce serait une grande faveur ! Merci!
<?php
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add()
{
add_meta_box( 'my-meta-box-masterslider', 'Masterslider Shortcode', 'cd_meta_box_masterslider', 'page', 'normal', 'high' );
}
function cd_meta_box_masterslider()
{
// $post is already set, and contains an object: the WordPress post
global $post;
$values = get_post_custom( $post->ID );
$text = isset( $values?['my_meta_box_masterslider'] ) ? $values['my_meta_box_masterslider'] [0] ) :'';
// We'll use this nonce field later on when saving.
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
Falls ein individueller Slider auf der Seite platziert werden soll, bitte hier den Shortcode platzieren.<br />
</p>
<p>
<label for="my_meta_box_masterslider">Masterslider Shortcode</label>
<input name="my_meta_box_masterslider" type="text" value="<?php echo get_post_meta($object->ID, "my_meta_box_masterslider", true); ?>">
</p>
<?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', $post_id ) ) 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
)
);
if( isset( $_POST['my_meta_box_masterslider'] ) )
update_post_meta( $post_id, 'my_meta_box_masterslider', esc_attr( $_POST['my_meta_box_masterslider'], $allowed ) );
}
?>
Solution n°1 trouvée
La fonction cd_meta_box_masterslider a quelques problèmes :
- Il y a un parasite ) dans votre ligne $text =
- La valeur que vous avez pour l’entrée ne fonctionnera pas car elle fait référence à quelque chose qui n’existe pas
- Enfin, quelque chose d’étrange se passe avec la ligne $text = – je l’ai réécrit et ça semble maintenant correct
Code complet mis à jour pour que vous puissiez l’utiliser…
function cd_meta_box_masterslider()
{
// $post is already set, and contains an object: the WordPress post
global $post;
$values = get_post_custom( $post->ID );
$text = isset($values['my_meta_box_masterslider']) ? $values['my_meta_box_masterslider'][0] : null;
// We'll use this nonce field later on when saving.
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
Falls ein individueller Slider auf der Seite platziert werden soll, bitte hier den Shortcode platzieren.<br />
</p>
<p>
<label for="my_meta_box_masterslider">Masterslider Shortcode</label>
<input name="my_meta_box_masterslider" type="text" value="<?php echo $text; ?>">
</p>
<?php
}
0 commentaire