I would like to have a metabox for the user to be able to select from a dropdown list one page from the website. I need to save the user choice, so I can use it later. So, my question is how can I create a metabox that will list all my pages?
1 Answer
You can use wp_dropdown_pages
. For example
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 );
}
See also the Codex on handling metabox data.
-
Sorry, I wasn't clear enough. This metabox will be use for a theme and not in a plugin. Commented Jul 3, 2012 at 10:03
-
This will work in
functions.php
too - but it is recommended to have things like this in a plug-in. Commented Jul 3, 2012 at 10:07 -
-
Hook onto
save_post
then (after checking its not a revision, and checking nonce, permissions etc - see example on Codex). Inspect$_POST
. In this example$_POST['myplugin']['page']
will hold the ID of the selected page. Commented Jul 3, 2012 at 10:15