web-dev-qa-db-fra.com

Ajouter un champion de saisie à 'Pages> Modifier la page' à travers functions.php

Question originale:

J'essaie d'ajouter un champ de saisie à "Pages> Modifier la page". L'utilisation de ce champ de saisie consistera pour un utilisateur à ajouter l'ID d'un curseur afin que ce dernier soit spécifique à la page.

Exemple:

  • L'utilisateur ajoute l'ID de la diapositive au champ de saisie sur l'écran Modifier la page.
  • La page récupère cet identifiant.

Merci à tous ceux qui ont répondu, vous êtes une communauté merveilleuse, j'ai reçu une excellente aide de ce site, merci!

RÉSULTAT FINAL

functions.php

// Add custom Slider ID field to 'Edit Page'
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add() {
    add_meta_box( 'my-meta-box-id', 'Slider', 'cd_meta_box_cb', 'page', 'normal', 'high' );
}
function cd_meta_box_cb( $post ) {
    $values = get_post_custom( $post->ID );
    $text = isset( $values['my_meta_box_text'] ) ? esc_attr( $values['my_meta_box_text'][0] ) : '';
    wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
    ?>
    <p>
        <label for="my_meta_box_text">Add a slider ID</label>
        <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
    </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 anchords can only have href attribute
        )
    );
    // Probably a good idea to make sure your data is set
    if( isset( $_POST['my_meta_box_text'] ) )
        update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) );
}

Page.php

<?php echo do_shortcode( '[cycloneslider id="' . get_post_meta(get_the_ID(), 'my_meta_box_text', true) . '"]'); ?>
2
Paxjah

functions.php

// Add custom Slider ID field to 'Edit Page'
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add() {
    add_meta_box( 'my-meta-box-id', 'Slider', 'cd_meta_box_cb', 'page', 'normal', 'high' );
}
function cd_meta_box_cb( $post ) {
    $values = get_post_custom( $post->ID );
    $text = isset( $values['my_meta_box_text'] ) ? esc_attr( $values['my_meta_box_text'][0] ) : '';
    wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
    ?>
    <p>
        <label for="my_meta_box_text">Add a slider ID</label>
        <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
    </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 anchords can only have href attribute
        )
    );
    // Probably a good idea to make sure your data is set
    if( isset( $_POST['my_meta_box_text'] ) )
        update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) );
}

Page.php

<?php echo do_shortcode( '[cycloneslider id="' . get_post_meta(get_the_ID(), 'my_meta_box_text', true) . '"]'); ?>
5
Paxjah

Tout d’abord, vous devez utiliser des champs personnalisés si vous souhaitez attribuer une valeur supplémentaire à post/page et non globalement à un site.

Ensuite, vous devez utiliser add_meta_box function pour enregistrer votre méta-boîte personnalisée, ce qui permettra d’éditer facilement ces champs personnalisés.

Voici un exemple de code:

// register your custom meta box
function my_slider_properties_meta_box() {
    add_meta_box('my_slider_properties', 'Link Format Title URL', 'my_slider_properties', 'page', 'side', 'default');
}
add_action('add_meta_boxes', 'my_slider_properties_meta_box');


// echo your custom meta box
function my_slider_properties() {
    global $post; 

    $my_slider_id = get_post_meta($post->ID, '_my_slider_id', true);

    echo '<p>My slider id</p>';
    echo '<input type="text" name="_my_slider_id" value="' . esc_attr($my_slider_id)  . '" size="40" />';
}


// process your custom meta box while saving
function my_slider_properties_save_meta($post_id, $post) {
    if ( !current_user_can( 'edit_post', $post->ID ))
        return $post->ID;

    $metas['_my_slider_id'] = $_POST['_my_slider_id'];

    foreach ($metas as $key => $value) {
        update_post_meta($post->ID, $key, $value);
    }
}
add_action('save_post', 'my_slider_properties', 1, 2);

Ce n'est qu'un exemple de base comment faire cela. Vous devriez vous occuper de la sécurité (utiliser des nonces) et d'autres choses, je suppose. Mais l'idée devrait être claire maintenant.

(6 caractères)

1
Krzysiek Dróżdż

Si vous souhaitez enregistrer l'id du curseur pour la page spécifique à toutes les pages, utilisez plutôt post meta boxes au lieu des options wp.

Pour obtenir une valeur de post meta, utilisez get_post_meta () function à la place de la fonction get_option ().

0
Vinod Dalvi