如何为特定帖子类型创建自定义分类搜索下拉列表

时间:2011-07-19 作者:Rob

我有许多自定义帖子类型,它们共享一个自定义分类法。

我正在尝试使用php实现一个下拉搜索框(插入小部件或其他地方),允许选择分类术语,并返回包含该术语的帖子,但仅在特定帖子类型内。

然后,我希望为每个帖子类型创建一个下拉搜索框,这样用户就可以轻松地导航到分类术语下和帖子类型内的帖子。

有人能帮忙吗?

1 个回复
SO网友:Bainternet

首先创建一个函数以显示搜索表单

function display_custom_search_form($atts){
    $return = \'<form role="search" method="get" id="searchform" action="\'.home_url( \'/\' ).\'">
                    <div><label class="screen-reader-text" for="s">Search for:</label>
                    \'.wp_dropdown_categories(array(\'name\' =>\'taxTerm\', \'taxonomy\' => \'TAXONOMY_NAME\').\'

    <!-- this is the magic field you will need to change in order for this to work with each post types--->

                        <input type="hidden" name="post_type" value="post" />

                        <input type="submit" id="searchsubmit" value="Search" />
                        <input type="hidden" name="custom_search" value="1"> 
                    </div>
                </form>\';
    if ($echo){
        echo $return;
    }else{
        return $return;
    }
}
将此函数挂接为一个快捷码,以便您可以在任何地方使用它(帖子/页面/小部件)

add_shortcode(\'my_c_s\',\'display_custom_search_form\');
add_filter(\'widget_text\', \'do_shortcode\');
然后检查表单是否已提交,如果已提交,则可以根据以下内容筛选帖子:

//was the form submitted

if (isset($_GET[\'custom_search\']) && $_GET[\'custom_search\'] == 1){
    add_filter(\'pre_get_posts\',\'Custom_Search_Filter\');
}

 //function to actually filter the posts based on the taxonomy term and post type
function Custom_Search_Filter($query) {
    //only do this on search
    if (is_search()){
        //first check for the first type if not set then its the default post.
        $post_type = $_GET[\'post_type\'];
        if (!$post_type) {
            $post_type = \'post\';
        }
        $query->set(\'post_type\', $post_type);

        //then check for the taxonomy term
        if (isset($_GET[\'taxTerm\'])){
            $query->set(\'TAXONOMY_NAME\', $_GET[\'taxTerm\']);
        }
    }

    return $query;
}  
将所有代码复制到主题的函数中。phpand将TAXONOMY\\u NAME更改为您的实际自定义分类名称(它有两次)。

打开您的小部件面板,添加一个简单的文本小部件[my_c_s] 内部并保存。

结束

相关推荐

创建自定义wp_Dropdown_Categories

我已经为此工作了很多天了。我想将类别分配给作者。我在google上找到了一些提示和插件,但不适用于Wordpress 3.1。我只是想出了我自己的主意。作为管理员,我将为作者创建一个类别,然后在其各自的概要文件元字段中定义或放置类别slug名称。我正在使用自定义的帖子类型名称“networks and taxonomy=blogs”现在,我试图在wp下拉类别中只包含概要文件元字段值(我上面说过)作为默认值,并将其隐藏在我的自定义发布表单中。当我回显时,cat ID和名称是正确的,但它不包括在下拉列表中。有