justintadlock/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 插件。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