themehybrid/hybrid-breadcrumbs

一款强大的面包屑脚本,适用于与 WordPress 主题结合使用。

1.0.1 2018-10-23 19:57 UTC

This package is auto-updated.

Last update: 2024-09-08 00:34:48 UTC


README

Hybrid Breadcrumbs 是一个即插即用的软件包,主题作者可以使用它为他们的 WordPress 主题添加面包屑。

该软件包是一个针对开发者的项目,旨在移除处理面包屑的所有工作。它是目前最先进且最稳健的面包屑系统之一,可以处理几乎任何配置,以显示每个页面的最精确的面包屑。

该项目最初于 2009 年以 Breadcrumb Trail 插件的形式推出。[http://justintadlock.com/archives/2009/04/05/breadcrumb-trail-wordpress-plugin](http://justintadlock.com/archives/2009/04/05/breadcrumb-trail-wordpress-plugin)。Hybrid Breadcrumbs 是对原始脚本的重新构思,旨在为主题作者提供一个更好的即插即用包。

要求

  • WordPress 4.9+。
  • PHP 5.6+(最好是 7+)。
  • 使用 Composer 来管理 PHP 依赖项。

文档

以下文档是针对主题作者编写的,因为这将是最常见的用例。如果在插件中使用,它应该不会有很大不同。

安装

首先,您需要打开您的命令行工具,并将目录更改为您的主题文件夹。

cd path/to/wp-content/themes/<your-theme-name>

然后,使用 Composer 安装软件包。

composer require justintadlock/hybrid-breadcrumbs

假设您还没有在您的主题中包含 Composer 自动加载文件,并且将其作为主题包的一部分进行分发,您可能需要在您的主题的 functions.php 中添加以下代码来自动加载此软件包(以及任何其他软件包)。

Composer 自动加载文件将自动为您加载 Hybrid Breadcrumbs 并使其代码可供您使用。

if ( file_exists( get_parent_theme_file_path( 'vendor/autoload.php' ) ) ) {
	require_once( get_parent_theme_file_path( 'vendor/autoload.php' ) );
}

翻译

由于此脚本中有一些国际化的文本字符串,您可能需要覆盖文本域或使用类似一个主题与两个文本域的技巧(本项目中的文本域为 'hybrid-core')。

如果您正在使用Hybrid Core 框架创建主题,您无需担心这一点。Hybrid Core 将为您适当处理翻译。

用法

大多数开发者都希望使用 Hybrid\Breadrumbs\Trail 类。这是一个静态包装类,本质上充当 语法糖,用于在主题模板中使用。

通常,以下调用将进入您的主题的 header.php 模板,但可以在任何您想显示面包屑路径的地方使用。

Hybrid\Breadcrumbs\Trail::display();

请注意,该插件的命名空间是 Hybrid\Breadcrumbs。如果您在另一个命名空间中工作,您需要在您的命名空间调用之后添加一个 use 语句或直接调用 \Hybrid\Breadcrumbs\Trail::display()。如果您正在处理命名空间,我将假设您知道自己在做什么。否则,请坚持使用上述方法。

静态类

Hybrid\Breadcrumbs\Trail 类有以下方法

// Returns a new instance of the Hybrid\Breadcrumbs\Breadcrumbs class.
Trail::breadcrumbs( array $args = [] );

// Makes a breadcrumb trail and returns an instance of the Hybrid\Breadcrumbs\Breadcrumbs.
Trail::make( array $args = [] );

// Returns an array of Hybrid\Breadcrumbs\Crumb\* objects.
Trail::all( array $args = [] );

// Displays the HTML output of the breadcrumb trail if it exists.
Trail::display( array $args = [] );

// Returns the HTML output of the breadcrumb trail or an empty string.
Trail::render( array $args = [] );

面包屑类

如果您不关心静态类并且需要直接与对象一起工作,那也是可以的。您可以像这样创建和使用 Breadcrumbs 对象

// Create a new Breadcrumbs object.
$trail = new \Hybrid\Breadcrumbs\Breadcrumbs( array $args = [] );

// Makes the breadcrumb trail and returns an instance of the object.
$trail->make();

// Returns an array of Hybrid\Breadcrumbs\Crumb\* objects.
$trail->all();

// Displays the HTML output of the breadcrumb trail if it exists.
$trail->display();

// Returns the HTML output of the breadcrumb trail or an empty string.
$trail->render();

参数

Breadcrumbs 类和 Trail 类的方法都接受一个参数,这是一个设置面包屑路径的可选参数数组。以下是一个列出所有可用选项的列表(以下为默认值)。

  • labels - 标签数组。
  • post_taxonomy - 基于帖子类型显示的标签分类数组。
  • show_on_front - 是否在网站首页显示面包屑路径。
  • show_trail_end - 是否显示最终的面包屑。
  • network - 在多站点中,是否在路径开始处包含主站点。
  • before - 在之前显示的HTML。
  • after - 在之后显示的HTML。
  • container_tag - 用于容器的HTML标签。
  • title_tag - 用于标题的HTML标签。
  • list_tag - 用于列表的HTML标签。
  • item_tag - 用于每个面包屑的HTML标签。
  • container_class - 用于容器的类。
  • title_class - 用于标题的类。
  • list_class - 用于列表的类。
  • item_class - 用于每个面包屑的类。

默认参数

$defaults = [
	'labels'          => [],
	'post_taxonomy'   => [],
	'show_on_front'   => false,
	'show_trail_end'  => true,
	'network'         => false,
	'before'          => '',
	'after'           => '',
	'container_tag'   => 'nav',
	'title_tag'       => 'h2',
	'list_tag'        => 'ul',
	'item_tag'        => 'li',
	'container_class' => 'breadcrumbs',
	'title_class'     => 'breadcrumbs__title',
	'list_class'      => 'breadcrumbs__trail',
	'item_class'      => 'breadcrumbs__crumb'
];

默认标签

标签用于WordPress不提供标题/标签的各种面包屑。

$defaults = [
	'title'               => __( 'Browse:',                               'hybrid-core' ),
	'aria_label'          => _x( 'Breadcrumbs', 'breadcrumbs aria label', 'hybrid-core' ),
	'home'                => __( 'Home',                                  'hybrid-core' ),
	'error_404'           => __( '404 Not Found',                         'hybrid-core' ),
	'archives'            => __( 'Archives',                              'hybrid-core' ),
	// Translators: %s is the search query.
	'search'              => __( 'Search results for: %s',                'hybrid-core' ),
	// Translators: %s is the page number.
	'paged'               => __( 'Page %s',                               'hybrid-core' ),
	// Translators: %s is the page number.
	'paged_comments'      => __( 'Comment Page %s',                       'hybrid-core' ),
	// Translators: Minute archive title. %s is the minute time format.
	'archive_minute'      => __( 'Minute %s',                             'hybrid-core' ),
	// Translators: Weekly archive title. %s is the week date format.
	'archive_week'        => __( 'Week %s',                               'hybrid-core' ),

	// "%s" is replaced with the translated date/time format.
	'archive_minute_hour' => '%s',
	'archive_hour'        => '%s',
	'archive_day'         => '%s',
	'archive_month'       => '%s',
	'archive_year'        => '%s',
];

默认帖子分类

默认情况下,没有注册帖子分类。但是,如果网站帖子的永久链接结构设置为仅%postname%,则以下将作为默认。

$defaults = [
	'post' => 'category'
];

版权和许可

本项目根据GNU GPL,版本2或更高版本授权。

2018-2019 © Justin Tadlock