自定义帖子类型的下拉列表

时间:2011-11-20 作者:Holden

我有一个自定义的帖子类型,医生,我需要为它创建一个下拉导航。我只想让它填充一个包含该CPT所有帖子的选择列表,并在选择时导航到该帖子。

我正在用wp\\u dropdown\\u categories做几个其他的下拉列表,但我想没有用于列出帖子类型的内置函数?

3 个回复
SO网友:chrisguitarguy

您需要使用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\' ); ?>

SO网友:RafaSashi

此函数的行为更像wp_dropdown_categories

function

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;
    }
}
use

   $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);    

SO网友:Patrick Charlier

我已经添加了一行javascript代码来直接“跳转”到选择中。

之前:

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

$out = \'<form name="jump1"><select name="jump2" id="wpse34320_select" OnChange="location.href=jump1.jump2.options[selectedIndex].value">><option>Select a doctor</option>\';

结束

相关推荐

Post Navigation

我的帖子分类页面上有一个小部件区域,我想知道是否有方法可以动态添加到第一篇帖子以及该类别当前帖子的链接。我认为第一篇帖子可以硬编码,因为它永远不会改变,但现在的帖子会。我想知道什么样的php疯狂可以做到这一点?我知道我知道,你在问为什么不直接使用已经出现的帖子导航。。。客户就是他们。非常感谢您的任何帮助,这将非常有助于我避免在悬崖上行走。