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. を使用して、ブログをWordPress SEOブレッドクラム$links配列に追加します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;
}

注:サイトやニーズに固有のコードを更新する必要があるかもしれませんが、一般的な考え方は同じです。


これは、私のニーズに合うように条件、URL、およびテキスト値を変更した後、完全に機能しました。ありがとう。
crdunst 2014年

変だ。このコードは、以前に追加するのではなく、「Category」を「Blog」に置き換えました。
マイケルロジャース

修正済み:私の場合、「1、-2」ではなく「2、-3」が必要でしたが、理由は不明ですが、そのように機能します。
マイケルロジャース

@rjbありがとう、非常に役立つコード!ページを削除するのではなく、トレイルに追加する方法を知っていますか?
クレイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.