Skip to content
电脑工程师入门

电脑工程师入门

create tomorrow, create happiness

  • 实用软件教程
    • Excel
    • WordPress
    • Powerpoint
    • PowerApps
    • PowerAutomateDesk
  • 计算机语言入门
    • PHP
    • Bootstrap
    • JavaScript
    • Python
    • HTML
    • WordPress
  • 咨询
  • Home
  • Wordpress
  • 如何制作自己的面包屑
  • HOME
  • Wordpress
  • 如何制作自己的面包屑

如何制作自己的面包屑

Wordpress

首先,让我们看一下大致的步骤。

  • 以“函数名()”的形式创建一个面包屑函数,并添加到functions.php
  • 将创建的函数<?php 関数名(); ?>粘贴到任意模板中并显示在表单中

即使说单一的面包屑结构,也可以根据要显示的页面考虑各种模式。暂时尝试总结常用页面的显示示例。





要显示的页面面包屑
首页不显示
类别页面HOME(带链接)> 类别名称
每月存档页面HOME(带链接)> 日期
标签页HOME(带链接)> 标签名称
发帖子页面HOME(带链接)> 类别名称(带链接)> 页面标题
固定页面HOME(含链接)> 页面标题
搜索页面HOME(带链接)> “关键字”的搜索结果
 404 页HOME(带链接) > 找不到您要查找的页面。

显示每个面包屑项的代码

页PHP代码表示
主页home_url();URL
类别the_category();文字链接
日期和时间the_archive_title();文本
标签名the_archive_title();文本
文章标题the_title();文本
固定页面标题the_title();文本

条件分支的代码

以下是显示带有条件分支的面包屑时的 php if 语句

if ( 条件 ) {
  // 条件是true的时候,要执行的内容
}

这是要放置在 [ 条件 ]中的代码列表。

页条件标签
对于首页is_front_page()
对于类别页面is_category()
对于每月存档页面is_archive()
对于标签页is_archive()
对于帖子页面is_single()
对于固定页面is_page()
对于搜索页面is_search()
对于 404 页is_404()

从上表可以看出,“对于每月存档页面”和“对于标签页”的条件分支是一样的,所以我们一起创建面包屑代码。

区切り文字の設定

<ul>
  <li><a href="#">HOME</a></li>
  <li><a href="#">类别名称</a></li>
  <li>帖子的名称</li>
<ul>

<!-----------CSS--------------->
<style>
ul{
  list-style: none;
  font-size: .8em;
}
li{
  display: inline;
}
li a{
  color: inherit;
  text-decoration: none;
}
li + li:before{
  content: ">";
  margin-right:.3em;
}
</style>

换句话说,这个面包屑列表是用 li 标签创建的。

骨架PHP代码

根据以上信息,我尝试创建一个作为框架的源代码。这里,显示面包屑列表的函数的名称是“breadcrumb”。

function breadcrumb() {
    $home = '<li><a href="'.get_bloginfo('url').'" >HOME</a></li>';
    echo '<ul>';
    if ( is_front_page() ) {
    // 对于首页
    }
    else if ( is_category() ) {
    // 对于类别页面
    }
    else if ( is_archive() ) {
    // 对于每月存档页面
    }
    else if ( is_single() ) {
    // 对于帖子页面
    }
    else if( is_page() ) {
    // 对于静态页面
    }
    else if( is_search() ) {
    // 对于搜索页面
    }
    else if( is_404() ) {
    //对于 404 页
    }
    echo "</ul>";
}

面包屑列表最左边显示的文本链接“HOME”是常用的显示方式,所以我把它做成一个变量。

在php中定义变量时,

$変数名 = '値';

它将采用以下形式

这次,我使用变量名“home”,如下所示。

$home = '<li><a href="'.get_bloginfo('url').'" >HOME</a></li>';

这echo $home;将显示文本链接“HOME”。

让我们逐步了解如何创建面包屑列表。

首页

首先是首页。由于面包屑未显示在首页上,因此条件分支中未写入任何内容。

if ( is_front_page() ) {
  // 未写入任何内容
}

类别页面

要在类别页面上显示面包屑,您需要考虑以下两种模式。

  • 如果没有父类
    Home > Category
  • 如果有父类
    首页 > 父类 > 子类

如果没有父类别,则只the_archive_title()输出显示的类别名称。但它也可能有父类别,因此我们也需要获取该信息。这是在那里使用的功能get_queried_object()。

get_queried_object()

get_queried_object()是一个函数,可以获取当前显示页面的信息。如果您正在查看类别存档,您可以获得有关该类别的信息,因此使用它来获取有关父类别的信息。

详细解说一下:

$cat = get_queried_object();

获取当前显示的类别存档的对象,然后

$cat_id = $cat->parent;

获取父类别的类别 ID。

get_category()

get_category()是一个允许您通过将类别 ID 放在括号中来获取有关类别的信息的函数。

get_category_link()

该函数get_category_link(カテゴリID)用于获取表单中指定的分类ID的URL

array_unshift()

array_unshift()是一个将元素(此处为列表标记)放在数组开头的函数。在这里,列表是按照“子类别”到“父类别”的顺序创建的,所以如果你保持原样,面包屑的顺序就会颠倒过来。所以我们使用这个函数来预先添加稍后创建的父类别列表。

foreach 语句

当你想扩展数组中的值时使用 foreach 语句(这里是类别列表标签)。

foreach(变量 as $value){
    echo $value;
}

像这样使用时,打印数组的值。

这是使用上述函数创建的代码。。

else if ( is_category() ) {
    $cat = get_queried_object();
    $cat_id = $cat->parent;
    $cat_list = array();
    while ($cat_id != 0){
        $cat = get_category( $cat_id );
        $cat_link = get_category_link( $cat_id );
        array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
        $cat_id = $cat->parent;
    }
    echo $home;
    foreach($cat_list as $value){
        echo $value;
    }
    the_archive_title('<li>', '</li>');
}

每月归档标签页

每月归档页面和标记页面一起处理。

else if ( is_archive() ) {
    echo $home;
    the_archive_title('<li>', '</li>');
}

这样列表标签就会显示每月归档标签页的标题。

发布页面

投稿ページで表示させたいのは、

HOME > 类别名称 > 页面标题

这是一个面包屑列表。
但是,如果注册类别有父类别,

HOME > 父类别名称 > 子类别名称 > 页面标题

我想以以上形式显示面包屑列表, 那么我们就使用get_the_category()。

get_the_category()

get_the_category()是获取显示的文章注册的分类信息的函数。使用此函数,您可以访问一个数组,其中按[0]、[1]、[2]、...的顺序存储了文章中注册的类别。使用它来获取注册文章的类别ID。

在那之后,

  • 从类别 ID 获取 URL
  • 获取类别名称
  • 使其成为列表标签并将其添加到数组中
  • 从类别 ID 获取父类别
  • 输出数组作为列表标签

按照以上步骤来,创建面包屑列表。

作为具体流程,首先

$cat = get_the_category();

将变量$cat赋值于get_the_category()。

之后,将第一个注册的类别(即[0])的类别ID赋值给变量并获取。

$cat_id = $cat[0]->cat_ID;

isset()

isset 函数isset(変数)用于检查变量是否具有值。

if( isset(变量) ){
  TRUE;
} else{
  FALSE;
}

与上面的 if 语句一起使用。在这里,我们首先使用 isset 函数来检查文章是否注册了类别。

一下的代码是使用上述函数创建的。

else if ( is_single() ) {
    $cat = get_the_category();
    if( isset($cat[0]->cat_ID) ) $cat_id = $cat[0]->cat_ID;
    $cat_list = array();
    while ($cat_id != 0){
        $cat = get_category( $cat_id );
        $cat_link = get_category_link( $cat_id );
        array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
        $cat_id = $cat->parent;
    }
    foreach($cat_list as $value){
        echo $value;
    }
    the_title('<li>', '</li>');
}

固定页面

固定页面很容易,因为它只是“HOME > 页面标题”。

else if( is_page() ) {
    echo $home;
    the_title('<li>', '</li>');
}

搜索页面

get_search_query()用于显示搜索关键字。
「キーワード」の検索結果要显示它,请执行以下操作:

else if( is_search() ) {
 echo $home;
  echo '<li>「'.get_search_query().'」的检索结果</li>';
}

第 404 页

404 页面很简单,因为它只显示任意文本。

else if( is_404() ) {
 echo $home;
 echo '<li>没有所查询的内容</li>';
}

删除档案中的冗余标题

最后,在创建面包屑时删除存档名称前出现的无关标题,例如“Category:”、“Tag:”、“Monthly:”等。将下面的代码与面包屑一起添加到您的 functions.php。

add_filter( 'get_the_archive_title', function ($title) {
  if ( is_category() ) {
    $title = single_cat_title( '', false );
  } elseif ( is_tag() ) {
    $title = single_tag_title( '', false );
  } elseif ( is_month() ) {
    $title = single_month_title( '', false );
  }
  return $title;
});

如何制作自己的面包屑的总结

下面是完成的代码。

// 面包屑
function breadcrumb() {
    $home = '<li><a href="'.get_bloginfo('url').'" >HOME</a></li>';
  
    echo '<ul>';
    if ( is_front_page() ) {
        // 对于首页
    }
    else if ( is_category() ) {
        // 对于类别页面
        $cat = get_queried_object();
        $cat_id = $cat->parent;
        $cat_list = array();
        while ($cat_id != 0){
            $cat = get_category( $cat_id );
            $cat_link = get_category_link( $cat_id );
            array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
            $cat_id = $cat->parent;
        }
        echo $home;
        foreach($cat_list as $value){
            echo $value;
        }
        the_archive_title('<li>', '</li>');
    }
    else if ( is_archive() ) {
    //对于标签页
    echo $home;
    the_archive_title('<li>', '</li>');
    }
    else if ( is_single() ) {
    // 对于帖子页面
    $cat = get_the_category();
        if( isset($cat[0]->cat_ID) ) $cat_id = $cat[0]->cat_ID;
        $cat_list = array();
        while ($cat_id != 0){
            $cat = get_category( $cat_id );
            $cat_link = get_category_link( $cat_id );
            array_unshift( $cat_list, '<li><a href="'.$cat_link.'">'.$cat->name.'</a></li>' );
            $cat_id = $cat->parent;
        }
        foreach($cat_list as $value){
            echo $value;
        }
        the_title('<li>', '</li>');
    }
    else if( is_page() ) {
    // 对于静态页面
    echo $home;
    the_title('<li>', '</li>');
    }
    else if( is_search() ) {
    // 对于搜索页面
    echo $home;
    echo '<li>「'.get_search_query().'」的搜索结果</li>';
    }
    else if( is_404() ) {
    // 对于 404 页
    echo $home;
    echo '<li>没有查询的内容</li>';
    }
    echo "</ul>";
}
 
// 删除档案中的冗余标题
add_filter( 'get_the_archive_title', function ($title) {
    if ( is_category() ) {
        $title = single_cat_title( '', false );
    } elseif ( is_tag() ) {
        $title = single_tag_title( '', false );
    } elseif ( is_month() ) {
        $title = single_month_title( '', false );
    }
    return $title;
});

将此代码添加到主题函数 (functions.php) 后,在您希望面包屑出现的位置插入以下代码。

<?php breadcrumb(); ?>
标签:Wordpress

文章导航

❮ Previous Post: single.php 和 page.php 之间的区别
Next Post: 第十八章 日期和时间 ❯

关联内容

Wordpress
操作简介:禁用评论
Wordpress
single.php 和 page.php 之间的区别
Wordpress
[图像的蓬松显示] Easy FancyBox的使用和设置方法
Wordpress
在 WinSCP 中显示隐藏文件
Wordpress
如果 WordPress 中没有 .htaccess 文件怎么办
Wordpress
[WordPress favicon] 如何轻松设置网站图标

实用软件教程

  • Powerpoint
  • Excel
  • PowerAutomateDesk
  • Wordpress
  • Powerapps

编程语言入门

  • JavaScript
  • HTML
  • PHP
  • Python
  • Bootstrap

Copy right by flashyonder.com