当前位置: 首页 > 知识库问答 >
问题:

添加自定义链接到WooCommerce breadcrumbs之后的Home(例如。首页>定制链接>分类>单品)

卞云瀚
2023-03-14

信息:
1.使用Wordpress和WooCommerce,旁边的创世纪主题(创世纪连接WooCommerce插件)
2.店铺存档页面为/Shop
3.面包屑被激活为所有页面(例如Breadcrumbs)。商店,分类/存档和单个产品页面)
4.产品(permalink:/Products)是一个单独的Wordpress页面(不是一个类别)

尝试实现以下面包屑条件:
1.在"Home"crumb之后添加"Products"crumb(名称:Products,链接:/Products)(例如:"Home"crumb)。家啊

我使用以下代码实现了功能结果:

/*
 * Add "Products" to breadcrumb (ex. Home > Products > etc), but do not show "Products" crumb in Shop page (ex. Home > Shop)...
 */

add_filter( 'woocommerce_breadcrumb_defaults', 'custom_woocommerce_breadcrumbs' );
function custom_woocommerce_breadcrumbs() {
    $home = get_home_url();
    $home_name = (is_shop()) ? 'Home' : 'Products';
    $home_encoded_link = (is_shop()) ? '' : '<a href="' . $home . '">Home</a> &raquo; ';

    return array(
            'delimiter'   => ' &raquo; ',
            'wrap_before' => '<nav class="woocommerce-breadcrumb" itemprop="breadcrumb">' . $home_encoded_link,
            'wrap_after'  => '</nav>',
            'before'      => '',
            'after'       => '',
            'home'        => _x( $home_name, 'breadcrumb', 'woocommerce' ),
        );
}
add_filter( 'woocommerce_breadcrumb_home_url', 'custom_breadcrumb_home_url' );
function custom_breadcrumb_home_url() {
    $home = get_home_url();
    return $home . '/products/';
}

问题是:有没有更好的办法?我的解决方案让我觉得有点“黑客”,我想知道我是否忽略了一个明显的问题

共有2个答案

司徒修能
2023-03-14

要在主页后添加自定义链接,我们可以使用array_splice函数

add_filter('woocommerce_get_breadcrumb', 'custom_breadcrumb', 20, 2);
function custom_breadcrumb($crumbs, $breadcrumb)
{
    if (!empty($crumbs)) {
        array_splice($crumbs, 1, 0, array(array(
            'Custom Link',
            'http://localhost/mysite/custom-link/'
        )));
    }

    return $crumbs;
}

这是变量$crumbs的结构

array(2)
0:array(2)
    0:"Home"
    1:"http://localhost/mysite"
1:array(2)
    0:"Shop"
    1:"http://localhost/mysite/shop/"

这就是为什么我使用array两次,结果如下

array(3)
0:array(2)
    0:"Home"
    1:"http://localhost/mysite"
1:array(2)
    0:"Custom Link"
    1:"http://localhost/mysite/custom-link/"
2:array(2)
    0:"Shop"
    1:"http://localhost/mysite/shop/"
益锦程
2023-03-14

有一条捷径可以做到这一点。

 add_filter( 'woocommerce_get_breadcrumb', 'remove_shop_crumb', 20, 2 );
function remove_shop_crumb( $crumbs, $breadcrumb ){
    foreach( $crumbs as $key => $crumb ){
        if( $crumb[0] === __('Home') ) {

            array_push($crumbs," /customlink/ ");
       }
    }

    return $crumbs;
}

我还没有机会测试它,所以你可能需要使用$crumbs[0]来找到正确的位置,并且不确定你是否需要链接周围的前斜杠。

 类似资料:
  • 我正在尝试创建一个定制的permalink结构,它将允许我完成以下任务。 我有一个自定义的帖子类型称为"项目" 我有一个自定义分类法,称为项目类别,分配给CPT项目 我希望我的永久链接结构如下所示: 项目/类别/项目-名称 或 /%自定义后类型%/%自定义分类%/%后名称%/ 创建这样的永久链接结构会如何影响URL或其他页面?是否可以取消定义自定义永久链接结构并将其限制为单个CPT? 谢谢

  • 我在一个Android Live壁纸应用程序中有如下偏好。(这些是复选框)。我想添加一个链接到一个Facebook页面到这个列表。在网上查看Android PreferenceCategory,我没有看到任何类似“LinkPreference”或“ButtonPreference”的东西,但话说回来,链接或按钮并不是真正的首选,所以也许我想把一个方形的钉子放在一个圆孔里。这可能吗?如果可能,如何可

  • 我已经搜索了又搜索,除了我称之为“hack方法”的方法之外,找不到其他方法将自定义分类添加到自定义管理菜单中。 然后我注册我的帖子类型并确保它们使用 这可以工作,自定义帖子类型显示在我的自定义菜单中。 但是自定义分类法不接受同一属性的字符串,只接受true或false。 因此,要添加它,您必须创建一个子菜单页 这是一种“黑客”方式。 还有别的办法吗?如果不修改WordPress核心,我可以覆盖re

  • 我已经为我的自定义帖子类型注册了自定义分类法: 工作如预期-我可以为我的自定义帖子选择自定义类别。 然后我将其添加到自定义菜单中: 它显示: 当我点击它(“类别”链接)时,分类法编辑页面加载良好,但是,父菜单显示为折叠,子菜单(“类别”)不突出显示: 另一方面,定制的post类型(linke“virtualproducts”)工作正常(见第一张图)。 我可以做一些破解/解决方法,使用JS/CSS使

  • 所以我在这个页面上使用了一个链接:https://www.revealio.com/make-brand-come-alive/(黄色按钮)。 该链接应该将产品添加到购物车中,然后将它们发送到销售漏斗中的下一步。 对于我使用的链接URL: 而且 完整链接代码为: 这是我发现的新东西。如果我直接转到链接,它只会添加一个产品。如果我点击页面(https://www.revealio.com/make-

  • 我找到了很多解决方案,但我的情况完全不同。 现在我的问题是,我正在开发一个插件,在插件中我制作了自定义帖子类型和自定义分类法,首先它的slug是不同的,现在我希望post类型slug和分类法slug是相同的,我也成功地实现了这一点,但有一个问题是,我的类别链接没有显示在管理菜单中,因为当我注册分类法时,我将object_type设置为slug,这在post类型slug和分类法slug中是相同的,但