📅  最后修改于: 2023-12-03 15:35:43.788000             🧑  作者: Mango
在使用 WordPress 进行网站开发时,面包屑导航是一个非常重要的导航形式。面包屑可以帮助网站访问者快速了解当前页面所处的位置,提高用户体验。在 WordPress 中,面包屑可以由主题或插件提供,但通常我们会需要在自己的子主题中程序化地实现面包屑导航。
在这篇文章中,我们将提供完整的 PHP 代码示例,让你可以轻松地在自己的子主题中添加面包屑导航。
在子主题的 functions.php 文件中添加以下代码,它将定义一个函数 get_breadcrumbs()
。
function get_breadcrumbs() {
// 获取当前文章信息
$post_id = get_queried_object_id();
$post_type = get_post_type($post_id);
$post_title = get_the_title($post_id);
$post_permalink = get_permalink($post_id);
// 面包屑基础部分
$breadcrumbs = '<div class="breadcrumbs">';
$breadcrumbs .= '<a href="' . get_home_url() . '">Home</a>';
// 文章分类
if ($post_type === 'post') {
$category = get_the_category();
if (!empty($category)) {
$category_name = $category[0]->cat_name;
$breadcrumbs .= ' > <a href="' . get_category_link($category[0]->cat_ID) . '">' . $category_name . '</a>';
}
}
// 文章标签
if ($post_type === 'post') {
$tags = get_the_tags();
if (!empty($tags)) {
$tag_name = $tags[0]->name;
$breadcrumbs .= ' > <a href="' . get_tag_link($tags[0]->term_id) . '">' . $tag_name . '</a>';
}
}
// 页面层级
if ($post_type === 'page') {
$ancestors = array_reverse(get_post_ancestors($post_id));
if (!empty($ancestors)) {
foreach ($ancestors as $ancestor) {
$breadcrumbs .= ' > <a href="' . get_permalink($ancestor) . '">' . get_the_title($ancestor) . '</a>';
}
}
}
// 当前文章
$breadcrumbs .= ' > ' . $post_title;
$breadcrumbs .= '</div>';
return $breadcrumbs;
}
在需要显示面包屑的地方,调用 get_breadcrumbs()
函数,并将返回的 HTML 代码输出即可。
例如,在 header.php 文件中添加以下代码:
<?php echo get_breadcrumbs(); ?>
以上代码中,我们通过 get_queried_object_id()
获取当前文章的 ID,然后使用 WordPress 提供的函数获取文章的类型、标题和 URL。
然后,我们定义了一个基础的面包屑导航,其中包含了返回首页的链接。
接着,我们根据文章类型,分别获取了分类、标签和页面层级,并分别添加到面包屑导航中。
最后,我们将当前文章的标题添加到导航中,以及最终的 HTML 结构。
在本文中,我们通过简单的 PHP 代码示例,演示了如何在 WordPress 的子主题中添加面包屑导航。使用这种方式,你可以轻松地在自己的项目中自定义面包屑的样式和功能。