不想显示随机类别。我想排除几个或使帖子只显示我想要的类别

时间:2017-11-11 作者:Ganich

我现在陷入了一种奇怪的境地。所以我有属于多个类别的wordpress帖子。e、 我的一篇文章分为两类。一个是“新闻”类别,另一个是“顶栏”。(我使用它将帖子分配到标题帖子区域,该区域从“顶栏”类别获取文章。

我面临的问题是,我只想在帖子栏上显示“新闻”类别名称。现在,它从列表中随机选择一个选定类别的名称并显示它。每次我刷新页面时,post块都会显示其中一个的名称。我只想看一个叫做“新闻”的主要节目。

现在如果您访问此链接http://thexpatt.com/news , 帖子类别标题将是新闻,其中一些显示了热门新闻。如果您一直刷新页面,则标题为“保持切换”。实际上,所有这些帖子都有顶级新闻类别和新闻类别。

我附上一张截图供您理解。I refreshed the page multiple times. Notice the difference in categories display name blocks over the posts.

1st Visit

3rd Visit

我的主题随机调用所选类别之一。如果是,如何使其仅调用第一个类别,或者如何排除某些类别的选择。

EDITED

Code i found in post.php上面甚至写着兰登的身份证。我该怎么把它改成?

$postCategories = get_the_category($post->ID);
$slug = \'\';
foreach($postCategories as $catSlug) {
    $slug.= $catSlug->slug." ";
}

$categories = wp_get_post_categories($post->ID); 
if(!empty($categories)){
    $catCount = count($categories);
    **//select a random category id**
    $id = rand(0,$catCount-1);
    //cat id
    $catId = $categories[$id];
} else {
    $catId = false;
}
或者帮助检查是否选择了yoast主类别并打印该类别。Yoast类别包含代码是这样的。(如互联网上所示)。

    $primary_cat_id=get_post_meta($product>id,\'_yoast_wpseo_primary_product_cat\',true); 
if($primary_cat_id){    
$product_cat = get_term($primary_cat_id, \'product_cat\');    if(isset($product_cat->name)) 
echo $product_cat->name; }
非常感谢。

3 个回复
最合适的回答,由SO网友:Ganich 整理而成

Orange These support answered my question. If anyone else is facing the similar situation the use this way to fix Solidus Theme Multiple Category Fix. Thanks

要为新闻块设置一个选定的类别,您需要在中找到solidus-theme\\includes\\home-blocks files 像这样的线条:

$categories = get_the_category($my_query->post->ID);
$catCount = count($categories);
//select a random category id
$id = rand(0,$catCount-1);
//cat id
$catId = $categories[$id]->term_id;
并替换为以下线条

if(is_array($cat)) {
$categories = get_the_category($my_query->post->ID);
$catCount = count($categories);
//select a random category id
$id = rand(0,$catCount-1);
//cat id
$catId = $categories[$id]->term_id;
} else {
$catId = $cat;
}
如果主页块只有一个选定的类别,那么它将只显示一个类别,但是你将选择多个类别,然后它将像以前一样随机显示。但是,如果一篇文章有多个类别,并且你已经为块选择了一个类别,那么它只会显示一个类别。

SO网友:IXN

您可以在functions.php 隐藏顶栏类别。

function the_category_filter($thelist,$separator=\' \') {
    if(!defined(\'WP_ADMIN\')) {
        //list the category names to exclude
        $exclude = array(\'TopBar\');
        $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);

SO网友:Rarst

如果问题是类别不意味着服务于这种功能性目的,我会说root。类别纯粹是分组机制,但它们没有功能分化的概念。

不过,这是你已经准备好的。

在不改变类别使用方式的情况下,我会调整类别存档模板,以输出当前存档的名称,而不是每个帖子的类别。

这将实现您想要的用例(所有/news 表示News) 与微观管理邮报类别的输出相比,随着时间的推移,更不容易发生变化。

结束