How To Create Array of WordPress Pages & Select Dropdown

I was working on a new theme yesterday and realized I needed to provide a drop-down option in my theme panel where the user could choose a page from a list that included all the pages they had published. In order to do this I needed to create an array that gathered all the users pages so I could then show them in my options panel. Below is a guide showing you how you can store an array of WordPress pages for use in your theme or plugin as well as a guide on creating a dropdown of pages.
Create an Array of Pages
Below is the code snippet required to make this all happen. What it does is it gathers a list of your pages and stores them in the $pages_array variable so later you can loop through them. And yes the get_pages function already returns an array but the purpose of the snippet is to create a more simple associative array where the keys are the page ID numbers and the value is the page name.
$pages_array = array( 'Choose A Page' );
$get_pages = get_pages( 'hide_empty=0' );
foreach ( $get_pages as $page ) {
$pages_array[$page->ID] = esc_attr( $page->post_title );
}
Now you have an associative array of pages that you can easily loop through, store in a global variable or whatever you want.
Create A Select Field Dropdown of Pages
You can create a select dropdown where a user can select page from a form by looping through an array of pages (as mentioned in the previous section) however, WordPress has a built-in function that was added in WP 2.1 so you can automatically create a select dropdown using a simple function named “wp_dropdown_pages” that accepts various parameters. Below is an example of the function in action:
wp_dropdown_pages( array(
'child_of' => 0,
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'hierarchical' => 1,
'post_type' => 'page'
) );
Learn more about wp_dropdown_pages from the WordPress Codex.