获取基于变量的分类描述

时间:2015-07-21 16:04:10

标签: php wordpress wp-query custom-taxonomy

我正在尝试根据页面设置显示的分类法显示分类法描述(使用变量设置)

实际上,我只看到第一个描述,无论设置了哪个类别变量。

以下是我如何设置它:

我已经构建了一个名为“product”的自定义帖子类型,并设置了一个名为“product_type”的分类。

    //Register product post type
    add_action('init', 'product_register');
    function product_register() {
        $labels = array(
            'name' => ('Products'),
            'singular_name' => ('Product'),
            'add_new' => ('Add New'),
            'add_new_item' => ('Add New Product'),
            'edit_item' => ('Edit Product'),
            'new_item' => ('New Product'),
            'view_item' => ('View Product'),
            'search_items' => ('Search'),
            'not_found' => ('Nothing found'),
            'not_found_in_trash' => ('Nothing found in Trash'),
            'parent_item_colon' => ''
            );
        $args = array(
            'labels' => $labels,
            'menu_icon' => 'dashicons-tag',
            'public' => true,
            'has_archive' => true,
            'supports' => array('title', 'revisions', 'editor','thumbnail'),
            'capability_type' => 'post',
            'rewrite' => array("slug" => "product"), // Permalinks format
            );
        register_taxonomy('product_type', array('product'), array(
            'hierarchical' => true,
            'label' => 'Product Type',
            'singular_label' => 'Type',
            'show_ui' => true,
            'show_admin_column' => true,
            'query_var' => true,
            'rewrite' => true)
        );
        register_post_type( 'product' , $args );
    }

在wordpress后端,我已经加载了一些术语,并且还添加了描述。

Admin category list with values archive-products.php的工作方式类似于登陆页面,但会接受来自名为$ type的变量的信息来过滤内容。

    if (isset($_GET['type']) || !empty($_GET['type']) ) {
        $filtered = true;
        $type = $_GET['type'];
    }

有了这些信息,我可以为包含该分类术语的项目设置WP_Query。

    if ($filtered == true) {
        $type = explode(' ', $_GET['type']);
        $taxonomy = array(
            array(
                'taxonomy' => 'product_type',
                'field'    => 'slug',
                'terms'    => $type
                )
            );
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'order' => 'DEC',
        'orderby' => 'title',
        'offset' => '0',
        'tax_query' => $taxonomy
        );
    $the_query = new WP_Query($args);
    if($the_query->have_posts()):
        $terms = get_the_terms( $post->ID, 'product_type' );
    if($terms) {
        foreach( $terms as $term ) {
    echo $term->description; //always shows first term description, but should display description based on $type
    }
    }
    while($the_query->have_posts()):$the_query->the_post();
    the_title();
    the_content();
    endwhile;
    else: //nothing to show here
    endif;} else {
    // non-filtered page design
    }

查询效果很好但是,正如我之前提到的,它只是拉动了第一个分类法描述。

这是要处理的部分:

    $terms = get_the_terms( $post->ID, 'product_type' );
    if($terms) {
        foreach( $terms as $term ) {
    echo $term->description;
    }
    }

我猜测它需要在查询中找到正确的描述,但它似乎没有什么区别。

我也试过这个:

    $term = get_term_by( $post->ID, $type, 'product_type' );
    echo $term->description;

但这不会返回任何内容。

我没有想法。我没有通过谷歌或搜索这个网站找到任何东西。

感谢任何建议,提前谢谢。

0 个答案:

没有答案