具有自定义帖子计数的类别列表

时间:2020-08-14 作者:Gidromasservis QSC

我想显示带有自定义帖子类型计数的类别列表。但我在每个类别中都有两种不同的帖子类型。我该怎么做呢。请帮忙。这是我的代码:

<?php
    $category_object           = get_queried_object();
    $current_category_taxonomy  = $category_object->taxonomy;
    $current_category_term_id  = $category_object->term_id;
     $current_category_name  = $category_object->name;

    $args = array(
        \'child_of\'            => $current_category_term_id,
        \'current_category\'    => $current_category_term_id,
        \'depth\'               => 0,
        \'echo\'                => 1,
        \'exclude\'             => \'\',
        \'exclude_tree\'        => \'\',
        \'feed\'                => \'\',
        \'feed_image\'          => \'\',
        \'feed_type\'           => \'\',
        \'hide_empty\'          => 0,
        \'hide_title_if_empty\' => false,
        \'hierarchical\'        => true,
        \'order\'               => \'ASC\',
        \'orderby\'             => \'name\',
        \'separator\'           => \'\',
        \'show_count\'          => 1,
        \'show_option_all\'     => \'\',
        \'show_option_none\'    => __( \'No categories\' ),
        \'style\'               => \'list\',
        \'taxonomy\'            => \'category\',
        \'title_li\'            => __( $current_category_name ),
        \'use_desc_for_title\'  => 0,
    );
    wp_list_categories($args);
 ?>

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

开箱即用无法做到这一点,因为每个学期的职位数量都是单数,没有按职位类型细分。

为了做到这一点,您需要自己输出标记,并自己查询计数。

This will be slow/heavy/expensive.

因此,首先我们从当前的术语/分类法开始:

$category_object           = get_queried_object();
$current_category_taxonomy  = $category_object->taxonomy;
$current_category_term_id  = $category_object->term_id;
$current_category_name  = $category_object->name;
然后我们获取所有非空的子术语:

$children = get_terms(
    [
        \'taxonomy\' => $current_category_taxonomy,
        \'parent\'   => $category_object->term_id,
    ]
);
并在每个术语上循环:

foreach ( $children as $child ) {
    //
}
现在,在这个循环中,我们需要检查有多少帖子属于您的特定帖子类型,比如changeme 岗位类型:

    $args = [
        \'post_type\'      => \'changeme\',
        $term->taxonomy  => $child->term_id,
        \'posts_per_page\' => 1,
    ];
    $q    = new WP_Query( $args );
    if ( $q->have_posts() ) {
        echo \'<li>\' . esc_html( $term->name ) . \' ( \'. intval( $q->found_posts ) . \' ) </li>\';
    }
注意,我们使用了found_posts 参数在这一点上,只需将整个事情包装在<ul> 标记,并展开标记以匹配所需内容。循环中有一个术语对象,可以用来打印URL等。

不要忘记,这是昂贵的/缓慢的/沉重的,您可能会希望缓存它,可能使用瞬态,或者如果您有对象缓存或弹性搜索存在。

或者,您可以注册另一个特定于此帖子类型的分类法,并避免所有这些。

SO网友:Dharmishtha Patel

function my_taxonomy_posts_count_func($atts)
    {
        extract(shortcode_atts(array(
            \'post_type\' => \'post\',
        ) , $atts));
        global $WP_Views;
        $term = $WP_Views->get_current_taxonomy_term();
        $args = array(
            \'post_type\' => $post_type,
            $term->taxonomy => $term->term_id,
            \'order\' => \'ASC\',
            \'posts_per_page\' => - 1,
        );
        $posts = get_posts($args);
        if ($posts)
        {
            $res = count($posts);
        }
        return $res;
    
    }
    add_shortcode(\'my-taxonomy-posts-count\', \'my_taxonomy_posts_count_func\');
在主题/功能中添加代码。php

在您的内容中输入短代码,如下所示:

[我的分类法帖子计数帖子类型=“我的自定义帖子类型”]

更换;“我的自定义帖子类型”;使用特定的post type slug

用[我的分类法帖子计数帖子类型=“我的自定义帖子类型”替换快捷码[wpv分类法帖子计数]

根据注释更改代码

相关推荐

扩展WooCommerce小部件类-WC_Widget_Product_Categories

我正在尝试扩展woocommerce类,该类用于在我自己的插件中创建产品类别小部件,该插件为woo commerce产品添加了一个称为“部门”的新分类法。当我扩展WP\\u小部件时,一切正常,我看到一个新的小部件,可以添加到外观->小部件中。然而,当我试图扩展WC\\u Widget或WC\\u Widget\\u Product\\u类别时,我根本看不到新的Widget,即使我没有收到任何php错误。以下是我所拥有的不起作用的东西://get the base classes if(!cl