📌  相关文章
📜  wordpress 如何以编程方式在子主题中显示面包屑 - PHP (1)

📅  最后修改于: 2023-12-03 15:35:43.788000             🧑  作者: Mango

WordPress 如何以编程方式在子主题中显示面包屑 - PHP

在使用 WordPress 进行网站开发时,面包屑导航是一个非常重要的导航形式。面包屑可以帮助网站访问者快速了解当前页面所处的位置,提高用户体验。在 WordPress 中,面包屑可以由主题或插件提供,但通常我们会需要在自己的子主题中程序化地实现面包屑导航。

在这篇文章中,我们将提供完整的 PHP 代码示例,让你可以轻松地在自己的子主题中添加面包屑导航。

步骤
第一步:在 functions.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 的子主题中添加面包屑导航。使用这种方式,你可以轻松地在自己的项目中自定义面包屑的样式和功能。