ドロップダウンナビゲーションを作成する必要があるカスタム投稿タイプの医師があります。選択リストにそのCPTのすべての投稿を入力して、選択した投稿に移動するだけです。
Wp_dropdown_categoriesを使って他にもいくつかドロップダウンをしていますが、投稿タイプをリストするための組み込み関数はないと思いますか?
get_posts
を使用して自分のドロップダウンをロールバックする必要があります。
このようなもの(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;
}
それであなたのテンプレートで...
<?php echo wpse34320_type_dropdown( 'doctors' ); ?>
この関数はwp_dropdown_categories
のように動作します。
関数
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;
}
}
つかいます
$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);