I have a custom post type, Doctors, that I need to create a dropdown nav for. I just want it to populate a select list with all the posts of that CPT and navigate to that post on selection.

I'm doing a couple other dropdowns with wp_dropdown_categories, but I guess there's no built in function for listing a post type?

link|improve this question
feedback

2 Answers

You'll need to use get_posts and roll your own drop down.

Something like this (somewhere in functions.php):

<?php
function wpse34320_type_dropdown( $post_type )
{
    $posts = get_posts(
        array(
            'post_type'  => $post_type,
            'numberposts' => -1
        )
    );
    if( ! $posts ) return;

    $out = '<select id="wpse34320_select"><option>Select a Doctor</option>';
    foreach( $posts as $p )
    {
        $out .= '<option value="' . get_permalink( $p ) . '">' . esc_html( $p->post_title ) . '</option>';
    }
    $out .= '</select>';
    return $out;
}

Then in your template...

<?php echo wpse34320_type_dropdown( 'doctors' ); ?>
link|improve this answer
Thanks so much! I'll try that out. I need to finally learn PHP... – Holden Nov 21 '11 at 13:10
Can't seem to get this working - any suggestions? I'm not even seeing a dropdown... – Holden Nov 21 '11 at 19:55
feedback

I've added a javascript line to 'Jump' directly to the selection.

Before:

$out = '<select id="wpse34320_select"><option>Select a Doctor</option>';

After:

$out = '<form name="jump1"><select name="jump2" id="wpse34320_select" OnChange="location.href=jump1.jump2.options[selectedIndex].value">><option>Select a doctor</option>';
link|improve this answer
This is really, really annoying for keyboard users. They cannot reach the second page now. – toscho Feb 5 at 13:07
feedback

Your Answer

 
or
required, but never shown

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