也想出现在这里?联系我们

WordPress 面包屑导航Breadcrumbs 非插件实现

2023.10.04 wordpress教程
  • 文章介绍
  • 升级版本
  • 评价&建议

要在WordPress中实现面包屑导航(Breadcrumbs)而不使用插件,您可以通过编写自定义功能来完成。面包屑导航通常用于显示当前页面的层次结构,使用户能够轻松导航到其他页面。以下是一种非插件方式来实现面包屑导航的方法:

  1. 打开您的主题文件夹,通常在wpcontent/themes/yourthemename/

  2. 在主题文件夹中创建一个新的PHP文件,例如breadcrumbs.php

  3. breadcrumbs.php文件中添加以下代码作为面包屑导航的模板:

<?php
function custom_breadcrumbs() {
    $delimiter = ' » '; // 分隔符
    $home = '首页'; // 首页文本
    $before = '<span class="current">'; // 当前页之前的HTML
    $after = '</span>'; // 当前页之后的HTML

    if (!is_home() && !is_front_page() || is_paged()) {
        echo '<div class="breadcrumbs">';
        global $post;
        $homeLink = get_bloginfo('url');
        echo '<a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' ';

        if (is_category()) {
            global $wp_query;
            $cat_obj = $wp_query>get_queried_object();
            $thisCat = $cat_obj>term_id;
            $thisCat = get_category($thisCat);
            $parentCat = get_category($thisCat>parent);
            if ($thisCat>parent != 0)
                echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
            echo $before . '分类归档 "' . single_cat_title('', false) . '"' . $after;

        } elseif (is_day()) {
            echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
            echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
            echo $before . get_the_time('d') . $after;

        } elseif (is_month()) {
            echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
            echo $before . get_the_time('F') . $after;

        } elseif (is_year()) {
            echo $before . get_the_time('Y') . $after;

        } elseif (is_single() && !is_attachment()) {
            if (get_post_type() != 'post') {
                $post_type = get_post_type_object(get_post_type());
                $slug = $post_type>rewrite;
                echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type>labels>singular_name . '</a> ' . $delimiter . ' ';
                echo $before . get_the_title() . $after;
            } else {
                $cat = get_the_category(); $cat = $cat[0];
                echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
                echo $before . get_the_title() . $after;
            }

        } elseif (!is_single() && !is_page() && get_post_type() != 'post' && !is_404()) {
            $post_type = get_post_type_object(get_post_type());
            echo $before . $post_type>labels>singular_name . $after;

        } elseif (is_attachment()) {
            $parent = get_post($post>post_parent);
            $cat = get_the_category($parent>ID); $cat = $cat[0];
            echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
            echo '<a href="' . get_permalink($parent) . '">' . $parent>post_title . '</a> ' . $delimiter . ' ';
            echo $before . get_the_title() . $after;

        } elseif (is_page() && !$post>post_parent) {
            echo $before . get_the_title() . $after;

        } elseif (is_page() && $post>post_parent) {
            $parent_id = $post>post_parent;
            $breadcrumbs = array();
            while ($parent_id) {
                $page = get_page($parent_id);
                $breadcrumbs[] = '<a href="' . get_permalink($page>ID) . '">' . get_the_title($page>ID) . '</a>';
                $parent_id = $page>post_parent;
            }
            $breadcrumbs = array_reverse($breadcrumbs);
            foreach ($breadcrumbs as $crumb)
                echo $crumb . ' ' . $delimiter . ' ';
            echo $before . get_the_title() . $after;

        } elseif (is_search()) {
            echo $before . '搜索结果为 "' . get_search_query() . '"' . $after;

        } elseif (is_tag()) {
            echo $before . '标签归档 "' . single_tag_title('', false) . '"' . $after;

        } elseif (is_author()) {
            global $author;
            $userdata = get_userdata($author);
            echo $before . '作者档案 ' . $userdata>display_name . $after;

        } elseif (is_404()) {
            echo $before . '404 错误' . $after;
        }

        if (get_query_var('paged'))
            echo ' (' . __('Page', 'theme') . ' ' . get_query_var('paged') . ')';
        echo '</div>';
    }
}
  1. 在您的主题模板文件(例如,single.phppage.php 等)中包含breadcrumbs.php文件,以便在需要显示面包屑导航的地方调用custom_breadcrumbs()函数。通常,您可以在页面标题下方的位置插入面包屑导航。
<?php
get_template_part('breadcrumbs');
custom_breadcrumbs();
?>
  1. 保存文件并刷新您的WordPress网站,您应该能够在合适的页面上看到面包屑导航。

请注意,上面的代码示例中包含了一些默认设置,您可以根据自己的需求进行自定义。确保在对主题进行更改之前备份主题文件,以防万一出现问题。

有用0
  • 2023.10.04初次和大家见面了!

等待您对该主题的建议

发表评论

还能输入240个字

Hi, 欢迎加入Wordpress技术交流群,带你装逼带你飞!

我要入群
也想出现在这里?联系我们
wordpress加速

我来推荐一个更牛逼的给你看看?

  • 猛戳我吧