内容的栏目 * @param int $category 0列表 1频道 2单页 3外链 * @return array */ function category_list($forumlist, $model = 0, $display = 0, $category = 0) { if (empty($forumlist)) return NULL; static $cache = array(); $key = $model . '-' . $display . '-' . $category; if (isset($cache[$key])) return $cache[$key]; if ($display) { foreach ($forumlist as $k => $val) { if (1 == $val['display'] && 1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } else { foreach ($forumlist as $k => $val) { if (1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } return empty($cache[$key]) ? NULL : $cache[$key]; } /** * @param $forumlist 所有版块列表 不分模型 * @param int $display 0全部CMS栏目 1在首页和频道显示内容的栏目 * @param int $category 0列表 1频道 2单页 3外链 * @return array */ function category_list_show($forumlist, $display = 0, $category = 0) { if (empty($forumlist)) return NULL; static $cache = array(); $key = $display . '-' . $category; if (isset($cache[$key])) return $cache[$key]; if ($display) { foreach ($forumlist as $k => $val) { if (1 == $val['display'] && 1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } else { foreach ($forumlist as $k => $val) { if (1 == $val['type'] && $val['category'] == $category) { $cache[$key][$k] = $val; } } } return empty($cache[$key]) ? NULL : $cache[$key]; } /** * @param $forumlist 所有版块列表 * @return mixed BBS栏目数据(仅列表) 尚未开放bbs频道功能 */ function forum_list($forumlist) { if (empty($forumlist)) return array(); static $cache = array(); if (isset($cache['bbs_forum_list'])) return $cache['bbs_forum_list']; $cache['bbs_forum_list'] = array(); foreach ($forumlist as $_fid => $_forum) { if ($_forum['type']) continue; $cache['bbs_forum_list'][$_fid] = $_forum; } return $cache['bbs_forum_list']; } // 导航显示的版块 function nav_list($forumlist) { if (empty($forumlist)) return NULL; static $cache = array(); if (isset($cache['nav_list'])) return $cache['nav_list']; foreach ($forumlist as $fid => $forum) { if (0 == $forum['nav_display']) { unset($forumlist[$fid]); } } return $cache['nav_list'] = $forumlist; } ?>functions - Exclude category from shortcode
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

functions - Exclude category from shortcode

programmeradmin0浏览0评论

I have the following code and i am trying to exclude a specific category id ex-144

function product_count_shortcode( ) {
    $count_posts = wp_count_posts( 'product' );
    return $count_posts->publish;
}
add_shortcode( 'product_count', 'product_count_shortcode' );

How can exclude one category?

I have the following code and i am trying to exclude a specific category id ex-144

function product_count_shortcode( ) {
    $count_posts = wp_count_posts( 'product' );
    return $count_posts->publish;
}
add_shortcode( 'product_count', 'product_count_shortcode' );

How can exclude one category?

Share Improve this question edited Dec 30, 2016 at 17:50 Tunji 2,9611 gold badge18 silver badges28 bronze badges asked Dec 29, 2016 at 22:36 sotsot 451 silver badge9 bronze badges 8
  • You can achieve this using the 'category__not_in' => 6 parameter – Tunji Commented Dec 30, 2016 at 4:56
  • i try it and doesn't work – sot Commented Dec 30, 2016 at 16:33
  • You're trying to count posts excluding one category? – Tunji Commented Dec 30, 2016 at 16:34
  • Yeap that's right! – sot Commented Dec 30, 2016 at 16:37
  • Updated the code to use get_term so as to accommodate custom taxonomies – Tunji Commented Dec 30, 2016 at 16:50
 |  Show 3 more comments

2 Answers 2

Reset to default 1

I don't know of a direct method to achieve this, you should be able to get the category count using get_term then subtract that from the total.

function product_count_shortcode( $atts ) {

    $data = shortcode_atts( array(
        'cat_id'    => 144,
        'taxonomy'  => 'category'
    ), $atts );

    $category = get_term( $data['cat_id'], $data['taxonomy'] );
    $count = $category->count;
    $count_posts = wp_count_posts( 'product' );
    return (int)$count_posts->publish - (int)$count;
}
add_shortcode( 'product_count', 'product_count_shortcode' );

From iguanarama answer:

You can also use WP_Query

$myQuery = new WP_Query ([
    'post_type' => 'product',
    'cat' => '-144',
    'post_status' => 'publish'
]);
$count = ($myQuery ? $myQuery->found_posts : 0);

You could run a new WP_Query using a '-' for categories to exclude:

$myQuery = new WP_Query ([
    'post_type' => 'product',
    'cat' => '-144',
    'post_status' => 'publish'
]);
$count = ($myQuery ? $myQuery->found_posts : 0);
发布评论

评论列表(0)

  1. 暂无评论