web-dev-qa-db-fra.com

Comment créer une metabox qui listera toutes mes pages dans un sélecteur déroulant?

J'aimerais disposer d'une metabox pour que l'utilisateur puisse sélectionner dans une liste déroulante une page du site Web. Je dois enregistrer le choix de l'utilisateur afin de pouvoir l'utiliser ultérieurement. Ma question est donc: comment puis-je créer un metabox qui listera toutes mes pages?

1
Old Castle

Vous pouvez utiliser wp_dropdown_pages . Par exemple

 add_action( 'add_meta_boxes', 'myplugin_add_custom_box' );

/* Adds a box to the main column on the Post edit screens */
function myplugin_add_custom_box() {
    add_meta_box( 
        'myplugin_sectionid',
        __( 'My Post Section Title', 'myplugin_textdomain' ),
        'myplugin_inner_custom_box',
        'post' 
    );
}

/* Prints the box content */
function myplugin_inner_custom_box( $post ) {

     $dropdown_args = array(
        'post_type'        => 'page'
        'name'             => 'myplugin[page]',
        'sort_column'      => 'menu_order, post_title',
        'echo'             => 1,
    );

         // Use nonce for verification
         wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename');

         //Dropdown of pages
         wp_dropdown_pages( $dropdown_args );
}

Voir aussi le Codex sur la gestion des données de métabox.

3
Stephen Harris