在 WordPress / Genesis 中设置不同于 post / 页面标题的自定义面包屑
Set a custom breadcrumb in WordPress / Genesis that is different from the post / page title
我的公司一直在开发我们自己的 child WordPress/Genesis 主题,我们将其用作所有客户的标准。对于 SEO,我们有时会有较长的页面标题,这些标题在面包屑中看起来不太好。即 "Brick Services In Sometown"。它最终看起来像这样:
Home / Brick Services In Sometown / Acme Bricks
我们想要做的是能够在页面上有一个字段/post 允许我们为面包屑输入自定义文本的编辑器,所以它看起来像:
Home / Services / Acme Bricks
我知道如何将适当的元框添加到后端并将输入的信息添加到 post / 页面元中,但我看到使用这些额外数据作为面包屑的唯一方法是通过编辑我不想做的 Genesis 核心主题文件。我想在 child 主题中完成此操作,因此更新不是一件麻烦事。
如果我要编辑 Genesis 核心 breadcrumb.php 文件,我会这样做:
$ub_breadcrumb = esc_html( get_post_meta( $post->ID, '_ub_breadcrumb', TRUE ) );
if ( !empty( $ub_breadcrumb )) {
//* Add the custom page title for breadcrumbs if value is set
$crumbs[] = $ub_breadcrumb;
} else {
//* Add the current page title
$crumbs[] = get_the_title( $post->ID );
}
这来自第 363 行的 genesis/lib/classes/breadcrumb.php 核心文件。我会在上面的部分中为当前页面/post 的祖先做类似的事情还有。
是否有另一种方法可以在不编辑核心主题文件的情况下完成此操作?我们试图将这一切保留在 child 主题中,以便它作为更新证明(尽可能多)。
谢谢。 Google 是一件奇怪的事情,所以除了 Genesis 中的 built-in 面包屑过滤器之外,我没有找到任何东西,但那些不包括 post / 页面标题。
这是部分答案:在 child 主题(不是 parent 主题)的 functions.php 文件中,您可以从面包屑中删除 post 标题有了这个:
function be_remove_title_from_single_crumb( $crumb, $args ) {
return substr( $crumb, 0, strrpos( $crumb, $args['sep'] ) );
}
add_filter( 'genesis_single_crumb', 'be_remove_title_from_single_crumb', 10, 2 );
来自 http://www.billerickson.net/code/remove-post-title-from-breadcrumb/
有了这个,我想你可以删除默认的 post 标题,然后 - 在同一个函数中 - 检查是否存在来自元框或post 的自定义字段,我假设是 post ID,如果它存在,return 它。
有关核心函数的所有默认参数的参考,另请参阅 http://rickrduncan.com/wordpress/customize-genesis-breadcrumb:
public function __construct() {
//* Default arguments
$this->args = array(
'home' => __( 'Home', 'genesis' ),
'sep' => __( ' <span aria-label="breadcrumb separator">/</span> ', 'genesis' ),
'list_sep' => ', ',
'prefix' => sprintf( '<div %s>', genesis_attr( 'breadcrumb' ) ),
'suffix' => '</div>',
'heirarchial_attachments' => true,
'heirarchial_categories' => true,
'labels' => array(
'prefix' => __( 'You are here: ', 'genesis' ),
'author' => __( 'Archives for ', 'genesis' ),
'category' => __( 'Archives for ', 'genesis' ),
'tag' => __( 'Archives for ', 'genesis' ),
'date' => __( 'Archives for ', 'genesis' ),
'search' => __( 'Search for ', 'genesis' ),
'tax' => __( 'Archives for ', 'genesis' ),
'post_type' => __( 'Archives for ', 'genesis' ),
'404' => __( 'Not found: ', 'genesis' )
)
);
}
我已经有一段时间没有更新了,但你可能想试试我的插件:
https://github.com/GaryJones/genesis-single-breadcrumbs
我的公司一直在开发我们自己的 child WordPress/Genesis 主题,我们将其用作所有客户的标准。对于 SEO,我们有时会有较长的页面标题,这些标题在面包屑中看起来不太好。即 "Brick Services In Sometown"。它最终看起来像这样:
Home / Brick Services In Sometown / Acme Bricks
我们想要做的是能够在页面上有一个字段/post 允许我们为面包屑输入自定义文本的编辑器,所以它看起来像:
Home / Services / Acme Bricks
我知道如何将适当的元框添加到后端并将输入的信息添加到 post / 页面元中,但我看到使用这些额外数据作为面包屑的唯一方法是通过编辑我不想做的 Genesis 核心主题文件。我想在 child 主题中完成此操作,因此更新不是一件麻烦事。
如果我要编辑 Genesis 核心 breadcrumb.php 文件,我会这样做:
$ub_breadcrumb = esc_html( get_post_meta( $post->ID, '_ub_breadcrumb', TRUE ) );
if ( !empty( $ub_breadcrumb )) {
//* Add the custom page title for breadcrumbs if value is set
$crumbs[] = $ub_breadcrumb;
} else {
//* Add the current page title
$crumbs[] = get_the_title( $post->ID );
}
这来自第 363 行的 genesis/lib/classes/breadcrumb.php 核心文件。我会在上面的部分中为当前页面/post 的祖先做类似的事情还有。
是否有另一种方法可以在不编辑核心主题文件的情况下完成此操作?我们试图将这一切保留在 child 主题中,以便它作为更新证明(尽可能多)。
谢谢。 Google 是一件奇怪的事情,所以除了 Genesis 中的 built-in 面包屑过滤器之外,我没有找到任何东西,但那些不包括 post / 页面标题。
这是部分答案:在 child 主题(不是 parent 主题)的 functions.php 文件中,您可以从面包屑中删除 post 标题有了这个:
function be_remove_title_from_single_crumb( $crumb, $args ) {
return substr( $crumb, 0, strrpos( $crumb, $args['sep'] ) );
}
add_filter( 'genesis_single_crumb', 'be_remove_title_from_single_crumb', 10, 2 );
来自 http://www.billerickson.net/code/remove-post-title-from-breadcrumb/
有了这个,我想你可以删除默认的 post 标题,然后 - 在同一个函数中 - 检查是否存在来自元框或post 的自定义字段,我假设是 post ID,如果它存在,return 它。
有关核心函数的所有默认参数的参考,另请参阅 http://rickrduncan.com/wordpress/customize-genesis-breadcrumb:
public function __construct() {
//* Default arguments
$this->args = array(
'home' => __( 'Home', 'genesis' ),
'sep' => __( ' <span aria-label="breadcrumb separator">/</span> ', 'genesis' ),
'list_sep' => ', ',
'prefix' => sprintf( '<div %s>', genesis_attr( 'breadcrumb' ) ),
'suffix' => '</div>',
'heirarchial_attachments' => true,
'heirarchial_categories' => true,
'labels' => array(
'prefix' => __( 'You are here: ', 'genesis' ),
'author' => __( 'Archives for ', 'genesis' ),
'category' => __( 'Archives for ', 'genesis' ),
'tag' => __( 'Archives for ', 'genesis' ),
'date' => __( 'Archives for ', 'genesis' ),
'search' => __( 'Search for ', 'genesis' ),
'tax' => __( 'Archives for ', 'genesis' ),
'post_type' => __( 'Archives for ', 'genesis' ),
'404' => __( 'Not found: ', 'genesis' )
)
);
}
我已经有一段时间没有更新了,但你可能想试试我的插件:
https://github.com/GaryJones/genesis-single-breadcrumbs