Lista desplegable de un tipo de publicación personalizada

2

Tengo un tipo de publicación personalizada, Médicos, para la que necesito crear un navegador desplegable. Solo quiero que rellene una lista de selección con todas las publicaciones de ese CPT y navegue a esa publicación en la selección.

Estoy haciendo un par de otros menús desplegables con wp_dropdown_categories, pero supongo que no hay una función integrada para listar un tipo de publicación.

    
pregunta Holden 20.11.2011 - 22:18

3 respuestas

6

Necesitará usar get_posts y rodar su propio menú desplegable.

Algo como esto (en algún lugar en 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;
}

Luego en tu plantilla ...

<?php echo wpse34320_type_dropdown( 'doctors' ); ?>
    
respondido por el chrisguitarguy 21.11.2011 - 00:01
0

Esta función se comporta más como wp_dropdown_categories

función

public function wpse34320_get_dropdown_posts( $args = array( 'post_type' => 'post', 'show_option_none'  => 'Select a post', 'name' => null, 'selected' => '', 'echo' => true ) ){

    $posts = get_posts(
        array(
            'post_type'  => $args['post_type'],
            'numberposts' => -1
        )
    );

    $dropdown = '';

    if( $posts ){

        if( !is_string($args['name']) ){

            $args['name'] = $args['post_type'].'_select';
        }

        $dropdown .= '<select id="'.$args['name'].'" name="'.$args['name'].'">';

            $dropdown .= '<option value="-1">'.$args['show_option_none'].'</option>';

            $args['selected'] = intval($args['selected']);

            foreach( $posts as $p ){

                $selected = '';
                if( $p->ID == $args['selected'] ){

                    $selected = ' selected';
                }

                $dropdown .= '<option value="' . $p->ID . '"'.$selected.'>' . esc_html( $p->post_title ) . '</option>';
            }

        $dropdown .= '</select>';           
    }

    if($args['name'] === false){

        return $dropdown;
    }
    else{

        echo $dropdown;
    }
}

utilizar

   $args=array(

            'show_option_none'  => 'Select a custom post type',
            'post_type'         => $post_type,
            'name'              => $name,
            'selected'          => $selected_id,
            'echo'              => true
   );

    wpse34320_get_dropdown_posts($args);    
    
respondido por el RafaSashi 14.11.2016 - 19:04
-1

He agregado una línea de javascript a 'Saltar' directamente a la selección.

Antes:

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

Después:

$out = '<form name="jump1"><select name="jump2" id="wpse34320_select" OnChange="location.href=jump1.jump2.options[selectedIndex].value">><option>Select a doctor</option>';
    
respondido por el Patrick Charlier 05.02.2012 - 10:00

Lea otras preguntas en las etiquetas