从_ategory()中排除类别;

时间:2011-10-15 作者:Basilakis

function the_category_filter($thelist,$separator=\' \') {
    if(!defined(\'WP_ADMIN\')) {
        //list the category names to exclude
        $exclude = array(\'Something\',\'Something Else\',\'Blah\',\'YAY\');
        $cats = explode($separator,$thelist);
        $newlist = array();
        foreach($cats as $cat) {
            $catname = trim(strip_tags($cat));
            if(!in_array($catname,$exclude))
                $newlist[] = $cat;
        }
        return implode($separator,$newlist);
    } else
        return $thelist;
}
add_filter(\'the_category\',\'the_category_filter\',10,2);
我正在使用该代码,以获取_category();排除某些类别。但它不起作用,因为它应该。。。

4 个回复
SO网友:Rutwick Gangurde

尝试使用筛选器get_the_categories 并替换每次出现的the_category 通过echo get_the_category() (只是为了确定!)

这是我做的:

<?php
add_filter(\'get_the_categories\', \'exc_cat\');

function exc_cat($cats) {
        //not on admin pages
        if(!is_admin()){
            $exc = array(\'lipsum\', \'dolor\');
            foreach ($cats as $i=>$cat){
                if(in_array($cat->name, $exc)){
                   unset($cats[$i]); 
                }
            }
        }
    return $cats;
}
?>
请尝试我的代码,并告诉我它是否适合您的工作。

SO网友:bryceadams

这将起作用:

在函数中输入以下内容。php文件:

function exclude_post_categories($excl=\'\', $spacer=\' \'){
   $categories = get_the_category($post->ID);
      if(!empty($categories)){
        $exclude=$excl;
        $exclude = explode(",", $exclude);
        $thecount = count(get_the_category()) - count($exclude);
        foreach ($categories as $cat) {
            $html = \'\';
            if(!in_array($cat->cat_ID, $exclude)) {
                $html .= \'<a href="\' . get_category_link($cat->cat_ID) . \'" \';
                $html .= \'title="\' . $cat->cat_name . \'">\' . $cat->cat_name . \'</a>\';
                if($thecount>1){
                    $html .= $spacer;
                }
            $thecount--;
            echo $html;
            }
          }
      }
}
然后使用以下命令调用函数:

<?php exclude_post_categories(\'1,5\', \', \'); ?>
其中1或5是要排除的类别ID。

代码由提供http://wordpress.org/support/topic/the_category-exclude-categories

SO网友:steffanjj

从WordPress支持论坛输入这个方便的功能-只需将它添加到主题的功能中即可。php文件:

function the_category_filter($thelist,$separator=\' \') {
     // list the IDs of the categories to exclude
     $exclude = array(366);
     // create an empty array
     $exclude2 = array();

     // loop through the excluded IDs and get their actual names
     foreach($exclude as $c) {
          // store the names in the second array
          $exclude2[] = get_cat_name($c);
     }

     // get the list of categories for the current post     
     $cats = explode($separator,$thelist);
     // create another empty array      
     $newlist = array();

     foreach($cats as $cat) {
          // remove the tags from each category
          $catname = trim(strip_tags($cat));

          // check against the excluded categories
          if(!in_array($catname,$exclude2))

          // if not in that list, add to the new array
          $newlist[] = $cat;
     }
     // return the new, shortened list
     return implode($separator,$newlist);
}

// add the filter to \'the_category\' tag
add_filter(\'the_category\',\'the_category_filter\', 10, 2);
最初,我确实对这个函数有一些问题;经过一番修补,我意识到我需要在\\u category()标记中声明一个分隔符,如逗号、破折号等。在本例中,我只使用了一个空格-the_category(\' \') — 这不起作用,但将其换成一个不间断的空间就成功了:the_category(\'&nbsp;\').

信用证:http://www.stemlegal.com/greenhouse/2012/excluding-categories-from-the-category-tag-in-wordpres/

SO网友:Pankaj Kumar

我一直在寻找这样的解决方案,我对发布在不同主题中的一些代码进行了一些修改,我得到了这个。。

<?php foreach((get_the_category()) as $cat) {
if (($cat->cat_ID==\'#\')) 
echo $cat->cat_name;
} ?>
where#=您的猫ID。我希望它对您有用。

结束

相关推荐

如何编写这条wp_Query SELECT语句?

我想在创建SQL语句方面获得一些帮助,该语句将查询我的WordPress数据库,并根据用户输入的搜索词返回结果。基本上是这样的。用户术语1(常规字符串)用户术语2(邮政编码)如果在文章的标题、描述或类别中找到了常规字符串和/或邮政编码,则返回结果。(对我来说)最困难的部分是获得分类部分。我的猜测是,这将是一个带有内部联接的简单SELECT语句,但我的SQL技能非常有限。任何帮助都将不胜感激。编辑postDelete postReply with quote