Как добавить страницу в панировочные сухари Yoast

9

Я использую Yoasts Wordpress SEO и я настроил свои хлебные крошки. Проблема в том, что моя страница настроена следующим образом.

/
/about
/blog - On this page I query the posts and display them. The posts themselves have nothing before them in the URL.

Панировочные сухари показывают следующее.

Home / Category / Page Title

Я хочу, чтобы это показывалось вот так.

Home/ Blog / Category / Page Title

Это возможно?

Счастливчик люк
источник

Ответы:

27

Вот общий принцип того, что вам нужно сделать:

  1. Подключитесь к wpseo_breadcrumb_linksили wp_seo_get_bc_ancestors API-фильтрам .
  2. Добавьте свой блог в $linksмассив WordPress SEO Breadcrumb , используя array_splice.

Поместите это в вашу тему functions.php:

/**
 * Conditionally Override Yoast SEO Breadcrumb Trail
 * http://plugins.svn.wordpress.org/wordpress-seo/trunk/frontend/class-breadcrumbs.php
 * -----------------------------------------------------------------------------------
 */

add_filter( 'wpseo_breadcrumb_links', 'wpse_100012_override_yoast_breadcrumb_trail' );

function wpse_100012_override_yoast_breadcrumb_trail( $links ) {
    global $post;

    if ( is_home() || is_singular( 'post' ) || is_archive() ) {
        $breadcrumb[] = array(
            'url' => get_permalink( get_option( 'page_for_posts' ) ),
            'text' => 'Blog',
        );

        array_splice( $links, 1, -2, $breadcrumb );
    }

    return $links;
}

Примечание. Возможно, вам потребуется обновить код, соответствующий вашему сайту или потребностям, но общая идея остается прежней.

rjb
источник
Это работало отлично, после изменения моих условий, URL и текстовых значений в соответствии с моими потребностями. Спасибо.
crdunst
Weird. Этот код заменил «Category» на «Blog» вместо того, чтобы добавлять его раньше.
Майкл Роджерс
ИСПРАВЛЕНО: в моем случае ему нужно было «2, -3» вместо «1, -2», не знаю почему, но это работает именно так.
Майкл Роджерс
@rjb спасибо, очень полезный код! Вы знаете, как добавить страницу в след вместо того, чтобы удалить ее?
Крэй