获取当前父类别

时间:2013-08-23 作者:Howdy_McGee

The Problem

我正在尝试显示当前父类别标题,其下有帖子标题。问题是,我似乎无法在循环内或循环外获取当前类别的帖子。我可以得到父类别的列表。例如,如果我有一篇分为3个不同类别的文章,并且我浏览到这些类别中的单个文章,我希望它在顶部显示当前类别名称,而不仅仅是它所在的第一个[0]类别。

<小时>

The Example

Test Post 属于以下类别:Cat1, Cat2

我去查看Test Post 在里面Cat1 它应该显示Cat1 - Test Post

我去查看Test Post 在里面Cat2 它应该显示Cat2 - Test Post

<小时>

Trial and Error

get_the_category() 返回两个类别:Cat1, Cat2

$post->post_parent 始终返回0

echo $category[0]->name; 当然只会返回最顶级的类别-Cat1

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

为什么这不起作用,一个非常广泛的答案是the internet is stateless. 基本上,每个页面请求都是一个与其他页面请求不同的独立实例。

例如post-1 在中category-1category-2.

Wordpress加载时post-1 在…上single.php 它无法知道用户是如何到达页面的。它只知道category-1category-2 与职位关联。

无法获取“当前类别”,因为它已不在类别中。

这种行为还会造成Wordpress中面包屑的混淆。用户的面包屑路径可能如下所示。

Step 1. Home
Step 2. Home->category-1
Step 3. Home->post-1
预期的行为通常是最后一步是这样的。

Step 3. Home->category-1>post-1
但如果这能奏效,那么这也会奏效。

Step 3. Home->category-2->post-1
这对搜索引擎来说是不好的,因为现在同一篇文章有两个不同的URL。

但是,如果你真的想显示用户来自的类别,你可以尝试这样的方法。请记住,internet是无状态的,因此您需要一种将信息从一个页面传递到另一个页面的方法。

类别模板打开category.php 您可以将permalink更改为单篇文章,并以以下形式包含查询字符串参数?category=id. 可能看起来像这样。

<?php
$cat_obj = get_category( get_query_var( \'cat\' ) );
$cat_id = ( $cat_obj ? $cat_id = $cat_obj->term_id : $cat_id = \'\' );
?>
<a href="<?php echo get_permalink()  . \'?c=\' . $cat_id ?>"><?php the_title(); ?></a>
你的永久链接现在应该是这样的?c=19 附加到正常永久链接。

http://www.example.com/post-name/?c=19

单模板

在单模板上。php您需要从查询字符串中获取类别ID,获取类别名称,然后显示在页面上。其代码可能如下所示。

您需要检查是否设置了查询字符串参数。如果是,请使用esc_html() 为了安全起见,需要对其进行清理,然后检查以确保它是数字,而不是像“废话”这样的东西。

验证完成后,在页面上获取类别名称和输出。

if ( isset( $_GET[\'c\'] ) ) {
    $cat_id = (integer) esc_html( $_GET[\'c\'] );
    if ( is_numeric( $cat_id ) ) {
        $cat_obj = get_category($cat_id); 
        $cat_name = $cat_obj->name;
        echo \'<span>\' . $cat_name . \'</span>\';
    }
}

注意事项

如果查询字符串参数不存在,则不会显示类别。用户可以通过多种方式到达单个贴子页面,这只处理非常特定的用例。

如果搜索引擎发现有多个指向完全相同内容的唯一URL,这也可能对SEO产生负面影响。

结束

相关推荐

Single.php活动类别类

目前默认情况下(我相信),当你单身时。php、Wordpress不会像查看页面或类别归档文件一样,在查看单个帖子的博客类别中添加“活动”类。归档文件中也没有此项(如果您列出了它们)。有没有办法在列出帖子父类别后将其添加到“活动”类别?我以标准方式列出我的类别和归档:<div class=\"menu-item\"> <h4 class=\"title\"><a href=\"<?php echo get_permalink(15); ?>\