Title: parent_dropdown
Published: April 25, 2014
Last modified: February 24, 2026

---

# parent_dropdown( int $default_page, int $parent_page, int $level, int|WP_Post $post = null ): void|false

## In this article

 * [Parameters](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#wp--skip-link--target)

Prints out option HTML elements for the page parents drop-down.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#parameters)󠁿

 `$default_page`intoptional

The default page ID to be pre-selected. Default 0.

`$parent_page`intoptional

The parent page ID. Default 0.

`$level`intoptional

Page depth level. Default 0.

`$post`int|[WP_Post](https://developer.wordpress.org/reference/classes/wp_post/)
optional

Post ID or [WP_Post](https://developer.wordpress.org/reference/classes/wp_post/)
object.

Default:`null`

## 󠀁[Return](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#return)󠁿

 void|false Void on success, false if the page has no children.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#source)󠁿

    ```php
    function parent_dropdown( $default_page = 0, $parent_page = 0, $level = 0, $post = null ) {
    	global $wpdb;

    	$post  = get_post( $post );
    	$items = $wpdb->get_results(
    		$wpdb->prepare(
    			"SELECT ID, post_parent, post_title
    			FROM $wpdb->posts
    			WHERE post_parent = %d AND post_type = 'page'
    			ORDER BY menu_order",
    			$parent_page
    		)
    	);

    	if ( $items ) {
    		foreach ( $items as $item ) {
    			// A page cannot be its own parent.
    			if ( $post && $post->ID && (int) $item->ID === $post->ID ) {
    				continue;
    			}

    			$pad      = str_repeat( '&nbsp;', $level * 3 );
    			$selected = selected( $default_page, $item->ID, false );

    			echo "\n\t<option class='level-$level' value='$item->ID' $selected>$pad " . esc_html( $item->post_title ) . '</option>';
    			parent_dropdown( $default_page, $item->ID, $level + 1 );
    		}
    	} else {
    		return false;
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/template.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-admin/includes/template.php#L934)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-admin/includes/template.php#L934-L964)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#related)󠁿

| Uses | Description | 
| [parent_dropdown()](https://developer.wordpress.org/reference/functions/parent_dropdown/)`wp-admin/includes/template.php` |

Prints out option HTML elements for the page parents drop-down.

  | 
| [selected()](https://developer.wordpress.org/reference/functions/selected/)`wp-includes/general-template.php` |

Outputs the HTML selected attribute.

  | 
| [esc_html()](https://developer.wordpress.org/reference/functions/esc_html/)`wp-includes/formatting.php` |

Escaping for HTML blocks.

  | 
| [get_post()](https://developer.wordpress.org/reference/functions/get_post/)`wp-includes/post.php` |

Retrieves post data given a post ID or post object.

  | 
| [wpdb::get_results()](https://developer.wordpress.org/reference/classes/wpdb/get_results/)`wp-includes/class-wpdb.php` |

Retrieves an entire SQL result set from the database (i.e., many rows).

  | 
| [wpdb::prepare()](https://developer.wordpress.org/reference/classes/wpdb/prepare/)`wp-includes/class-wpdb.php` |

Prepares a SQL query for safe execution.

  |

[Show 4 more](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#)

| Used by | Description | 
| [parent_dropdown()](https://developer.wordpress.org/reference/functions/parent_dropdown/)`wp-admin/includes/template.php` |

Prints out option HTML elements for the page parents drop-down.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/parent_dropdown/?output_format=md#changelog)󠁿

| Version | Description | 
| [4.4.0](https://developer.wordpress.org/reference/since/4.4.0/) | `$post` argument was added. | 
| [1.5.0](https://developer.wordpress.org/reference/since/1.5.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fparent_dropdown%2F)
before being able to contribute a note or feedback.