parent_dropdown

The timeline below displays how wordpress function parent_dropdown has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Prints out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 * @since 4.4.0 `$post` argument was added.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int         $default_page Optional. The default page ID to be pre-selected. Default 0.
 * @param int         $parent_page  Optional. The parent page ID. Default 0.
 * @param int         $level        Optional. Page depth level. Default 0.
 * @param int|WP_Post $post         Post ID or WP_Post object.
 * @return void|false Void on success, false if the page has no children.
 */
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\n\t\t\tFROM {$wpdb->posts}\n\t\t\tWHERE post_parent = %d AND post_type = 'page'\n\t\t\tORDER 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(' ', $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;
    }
}

WordPress Version: 5.5

/**
 * Print out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 * @since 4.4.0 `$post` argument was added.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int         $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int         $parent  Optional. The parent page ID. Default 0.
 * @param int         $level   Optional. Page depth level. Default 0.
 * @param int|WP_Post $post    Post ID or WP_Post object.
 * @return void|false Void on success, false if the page has no children.
 */
function parent_dropdown($default = 0, $parent = 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));
    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, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . '</option>';
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 5.4

/**
 * Print out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 * @since 4.4.0 `$post` argument was added.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int         $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int         $parent  Optional. The parent page ID. Default 0.
 * @param int         $level   Optional. Page depth level. Default 0.
 * @param int|WP_Post $post    Post ID or WP_Post object.
 * @return void|false Void on success, false if the page has no children.
 */
function parent_dropdown($default = 0, $parent = 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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            $selected = selected($default, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . '</option>';
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 5.1

/**
 * Print out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 * @since 4.4.0 `$post` argument was added.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int         $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int         $parent  Optional. The parent page ID. Default 0.
 * @param int         $level   Optional. Page depth level. Default 0.
 * @param int|WP_Post $post    Post ID or WP_Post object.
 *
 * @return null|false Boolean False if page has no children, otherwise print out html elements.
 */
function parent_dropdown($default = 0, $parent = 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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            $selected = selected($default, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . '</option>';
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 4.4

/**
 * Print out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 * @since 4.4.0 `$post` argument was added.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int         $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int         $parent  Optional. The parent page ID. Default 0.
 * @param int         $level   Optional. Page depth level. Default 0.
 * @param int|WP_Post $post    Post ID or WP_Post object.
 *
 * @return null|false Boolean False if page has no children, otherwise print out html elements
 */
function parent_dropdown($default = 0, $parent = 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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            $selected = selected($default, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . "</option>";
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 4.3

/**
 * Print out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 *
 * @global wpdb $wpdb
 *
 * @param int $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int $parent  Optional. The parent page ID. Default 0.
 * @param int $level   Optional. Page depth level. Default 0.
 *
 * @return null|false Boolean False if page has no children, otherwise print out html elements
 */
function parent_dropdown($default = 0, $parent = 0, $level = 0)
{
    global $wpdb;
    $post = get_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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            $selected = selected($default, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . "</option>";
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 4.1

/**
 * Print out option HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 *
 * @param int $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int $parent  Optional. The parent page ID. Default 0.
 * @param int $level   Optional. Page depth level. Default 0.
 *
 * @return null|false Boolean False if page has no children, otherwise print out html elements
 */
function parent_dropdown($default = 0, $parent = 0, $level = 0)
{
    global $wpdb;
    $post = get_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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            $selected = selected($default, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . "</option>";
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 3.9

/**
 * Print out <option> HTML elements for the page parents drop-down.
 *
 * @since 1.5.0
 *
 * @param int $default Optional. The default page ID to be pre-selected. Default 0.
 * @param int $parent  Optional. The parent page ID. Default 0.
 * @param int $level   Optional. Page depth level. Default 0.
 *
 * @return void|bool Boolean False if page has no children, otherwise print out html elements
 */
function parent_dropdown($default = 0, $parent = 0, $level = 0)
{
    global $wpdb;
    $post = get_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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            $selected = selected($default, $item->ID, false);
            echo "\n\t<option class='level-{$level}' value='{$item->ID}' {$selected}>{$pad} " . esc_html($item->post_title) . "</option>";
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}

WordPress Version: 3.7

/**
 * {@internal Missing Short Description}}
 *
 * @since 1.5.0
 *
 * @param unknown_type $default
 * @param unknown_type $parent
 * @param unknown_type $level
 * @return unknown
 */
function parent_dropdown($default = 0, $parent = 0, $level = 0)
{
    global $wpdb;
    $post = get_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));
    if ($items) {
        foreach ($items as $item) {
            // A page cannot be its own parent.
            if ($post && $post->ID && $item->ID == $post->ID) {
                continue;
            }
            $pad = str_repeat('&nbsp;', $level * 3);
            if ($item->ID == $default) {
                $current = ' selected="selected"';
            } else {
                $current = '';
            }
            echo "\n\t<option class='level-{$level}' value='{$item->ID}'{$current}>{$pad} " . esc_html($item->post_title) . "</option>";
            parent_dropdown($default, $item->ID, $level + 1);
        }
    } else {
        return false;
    }
}