I need to create a dropdown menu with "posts from a custom post type" as option.

This dropdown will be placed as custom meta box.

For example, I want all posts with the custom type "Video" as option in the select.

   <option>post title n°1<option>
   <option>post title n°2<option>


  • 1
    Where do you want this metabox to appear? I mean which page? Dec 16, 2011 at 5:20

4 Answers 4


Here is the code I'm using in a project I'm working on.

function generate_post_select($select_id, $post_type, $selected = 0) {
        $post_type_object = get_post_type_object($post_type);
        $label = $post_type_object->label;
        $posts = get_posts(array('post_type'=> $post_type, 'post_status'=> 'publish', 'suppress_filters' => false, 'posts_per_page'=>-1));
        echo '<select name="'. $select_id .'" id="'.$select_id.'">';
        echo '<option value = "" >All '.$label.' </option>';
        foreach ($posts as $post) {
            echo '<option value="', $post->ID, '"', $selected == $post->ID ? ' selected="selected"' : '', '>', $post->post_title, '</option>';
        echo '</select>';

$select_id is used as the name and id of the select, $post_type is the type you want to be made into the select and $selected is the post id you want selected in the select box.


See: http://codex.wordpress.org/Function_Reference/wp_dropdown_pages

  • Doesn't always work, per link you provided. Mar 20, 2015 at 13:36
  • 3
    Works only for hierarchical post types Jan 17, 2019 at 13:48
  • How to display option to select ALL post types in this dropdown?
    – Juraj
    Apr 4, 2021 at 9:38

If you already know how to make the custom meta box, you can use


maybe like so :

wp_dropdown_categories('taxonomy=your_texonomy&hide_empty=0&orderby=name&name=types&show_option_none=Select type);
  • 3
    wp_dropdown_categories shows categories, not post types as @Steffi asked for. Dec 16, 2011 at 6:26

Since my last answer was considered more of a question. I'll answer with more of an answer. You could use the Magic Fields plugin 2 (note the 2 because that is a different but improved plugin). You can choose a 'related type' field from the admin boxes they offer. Of course you still can excavate how it's done in this plugin if you want to create this function yourself, but at least there is somebody who figured it out.

Not the answer you're looking for? Browse other questions tagged or ask your own question.