您想仅显示 WordPress 帖子的父类别吗?
默认情况下,大多数 WordPress 主题都会列出与帖子关联的所有类别。但是,某些用户可能只想显示父类别并排除子类别。
在本文中,我们将向您展示如何修改 WordPress 帖子循环以仅显示单个帖子的父类别。
何时在 WordPress 中仅显示父类别
许多网站所有者使用父类别和子类别来为其网站创建结构。
例如,旅行博客可能具有按类别组织的旅行目的地,其中每个地区是父类别,城市作为子类别。
同样,美食博客可以发布按父母和儿童类别组织的食谱。例如,父类别可以是菜肴类型,子类别可以是菜肴类型。
现在,大多数 WordPress 主题使用the_category()
模板标签来列出与帖子关联的所有类别。
这个功能很高效,但它会按字母顺序显示所有类别,并完全忽略父/子关系。
话虽这么说,让我们看看如何更改此行为并仅在 WordPress 循环中显示父类别。
在 WordPress 后循环中仅显示父类别
对于本教程,您需要编辑 WordPress 主题文件。如果您以前没有这样做过,请查看我们关于如何在 WordPress 中复制和粘贴代码片段的文章。
首先,您需要将以下代码添加到主题的functions.php文件中或使用代码片段插件,例如WPCode(推荐):
123456789101112131415161718192021222324 | function wpb_get_parent_terms( $taxonomy = 'category' ) { $currentPost = get_post(); $terms = get_the_terms( $currentPost ->ID, $taxonomy ); if (is_wp_error( $terms )) { /** @var \WP_Error $terms */ throw new \Exception( $terms ->get_error_message()); } $map = array_map ( function ( $term ) use ( $taxonomy ) { return '<a href="' . esc_url(get_term_link( $term ->term_id, $taxonomy )) . '" title="' . esc_attr( $term ->name) . '"> ' . $term->name . ' </a>'; }, array_filter ( $terms , function ( $term ) { return $term ->parent == 0; }) ); return implode( ', ' , $map ); } |
由
有关更多详细信息,请参阅我们的指南,了解如何在 WordPress 中添加自定义代码而不破坏您的网站。
这段代码只是创建了一个新函数wpb_get_parent_terms()
。默认情况下,此功能仅显示父类别。
接下来,您需要将此函数放置在您想要单独显示父类别的 WordPress 主题文件中。
要确定要查看哪个模板文件,请参阅我们面向初学者的WordPress 模板层次结构备忘单。
基本上,您会寻找the_category()
;WordPress 循环内的模板标签。找到它后,您需要将其替换为以下代码:
1 | <?php wpb_get_parent_terms(); ?> |
由
此代码将单独显示您的父类别。如果您有多个类别是父类别或独立类别,则还将显示所有此类类别。
该代码片段也适用于所有其他分类法。例如,WooCommerce 产品类别或您可能拥有的任何自定义分类法。
只需将代码修改如下:
1 | <?php wpb_get_parent_terms( 'product_cat ' ); ?> |
由
此代码将显示 WooCommerce 商店的产品类别,并且仅显示产品的父类别或独立类别。
如果您想显示自定义分类法,请将product_cat 替换为您的自定义分类法名称。
我们希望本文能帮助您了解如何仅显示 WordPress 帖子的父类别。您可能还想查看我们关于如何在循环外显示自定义字段的指南,或者我们的专家为您的网站挑选的最佳人工智能聊天机器人软件。