Elementor用Yoast SEO自带的面包屑组件,如何按照主菜单层级来自定义面包屑层级

Elementor用Yoast SEO自带的面包屑组件,如何按照主菜单层级来自定义面包屑层级

问题:elementor中引用的Yoast SEO面包屑组件,一般只会按照页面层级/文章层级或分类层级来显示面包屑。如何按照主菜单中显示的层级来自定义面包屑层级?

方案:

可以通过 Yoast SEO 的面包屑过滤器 wpseo_breadcrumb_links 实现,不需要修改 Elementor 页面模板,也不需要改变 WordPress 的页面父子级关系。

/**
 * Yoast SEO Breadcrumb:
 * 在 Download 页面中插入 Resource 父级
 */
add_filter('wpseo_breadcrumb_links', 'custom_download_breadcrumb');

function custom_download_breadcrumb($links) {

    // 只在 Download和FAQS 页面执行
    if ( ! ( is_page('download-center') || is_page('faqs') )  ) {
        return $links;
    }

    // Resource 父级导航
    $resource_breadcrumb = array(
        'url'  => home_url('/faqs/'),
        'text' => 'Resource',
    );

    // 防止重复插入
    foreach ($links as $link) {
        if (
            isset($link['text']) &&
            $link['text'] === 'Resource'
        ) {
            return $links;
        }
    }

    // 在当前页面名称前面插入 Resource
    array_splice(
        $links,
        count($links) - 1,
        0,
        array($resource_breadcrumb)
    );

    return $links;
}

最终效果如下:

Comments are closed.