如何在Wordpress中使用Taxonomy类别创建过滤器

时间:2015-03-02 08:26:27

标签: php wordpress filter taxonomy

我需要创建一个带有Wordpress Taxonomy Categories的过滤器及其帖子,如图question 名称,发行人,Isin和市场下拉列表是类别。我如何分类并使用他们的帖子创建一个简单的过滤器?我搜索了更多,但不知道如何管理和从哪里开始。尝试插件Beautiful taxonomy filters但它没有我需要的单独的类别。 请帮帮我。 我正在按照这种方式提交下拉菜单

function get_terms_dropdown($taxonomies, $args){
                                    $myterms = get_terms($taxonomies, $args);
                                    $output ="<select class='news_cat'>";
                                    foreach($myterms as $term){
                                        $root_url = get_bloginfo('url');
                                        $term_taxonomy=$term->taxonomy;
                                        $term_slug=$term->slug;
                                        $term_name =$term->name;
                                        $link = $root_url.'/?'.$term_taxonomy.'='.$term_slug;
                                        $output .="<option value='".$link."'>".$term_name."</option>";
                                    }
                                    $output .="</select>";
                                return $output;
                                }
                    $taxonomies = array('articles-tax');
                    $args = array('orderby'=>'count','hide_empty'=>false);
                    echo get_terms_dropdown($taxonomies, $args);

并以这种方式创建了一个表单

 <form role="search" method="get" id="searchform" action="<?php bloginfo('url'); ?>">and dropdowns here</form>

但仍然无法在url中看到所有选定的下拉值,请帮我修复此问题,这是我在过滤器世界中的第一步!

1 个答案:

答案 0 :(得分:0)

name按钮上的网址上传递所有字词slugSEARCH。获取QUERY_STRING并使用get_term_by函数搜索Term ID:

// Suppose you have term name in URL
// Then find Term ID with Name, or if you have slug in url then change "name" to "slug"
$term = get_term_by( "name", $term_name, $taxonomy );
//$term->term_id;

现在,您必须使用WP_Query按特定字词ID访问帖子:

$args = array(
    'post_type' => 'YOUR_POST_TYPE',
    'tax_query' => array(
        array(
          'taxonomy' => $taxonomy,
          'field' => 'id',
          'terms' => $term->term_id // You can pass more then one term id like array(32, 65)
        )
    )
);
$query = new WP_Query( $args );