サポート » プラグイン » WP SiteManagerのパンくずナビで、頭に項目を追加したい

  • 解決済モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)


    http://www.wp-sitemanager.com/usage/breadcrumb/

    マルチサイト環境下の子ブログで、一番頭に出力される項目はルートブログのトップにしたいと思い、上記ページ内の

    // agenda分類では、間にインタビューの項目を追加する
        if ( is_tax( 'agenda' ) ) {
            $bread_crumb_arr[2] = $bread_crumb_arr[1];
            $bread_crumb_arr[1] = array( 'title' => 'インタビュー', 'link' => 'http://www.example.com/interview/' );
        }
        return $bread_crumb_arr;

    このコードを参考にフィルターフックを使ったカスタマイズを試みています。

    【カスタマイズ前】
    子ブログトップ > カテゴリ名 > 記事名

    【希望】
    HOME(ドメインルート) > 子ブログトップ > カテゴリ名 > 記事名

    【書いたコード】

    function custom_bread_crumb( $bread_crumb_arr ) {
        if ( !is_main_site() ) {
          $bread_crumb_arr[1] = $bread_crumb_arr[0];
          $bread_crumb_arr[0] = array( 'title' => 'HOME', 'link' => '/' );
        }
        return $bread_crumb_arr;
    }
    add_filter( 'bread_crumb_arr', 'custom_bread_crumb' );

    【結果】
    HOME(ドメインルート) >子ブログトップ > 記事名

    ・・・・カテゴリ名がいなくなっちゃいました(>_<)

    コード的には足すんじゃなくて置き換えてる感じなので、1ついなくなるのは分からないでもないんですが、、、スマートな処理が思いつかず。
    配列の1つめに項目を足すにはどういう書き方をするのがスマートでしょうか??

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 私は使っていませんが。

    ‘$bread_crumb_arr[1]’を何にも置き換えずに置換したからではないですか?
    もちろん’$bread_crumb_arr[2]’も置き換える必要があると思います。
    ‘array_unshift()’を使ってみてはどうでしょう?
    配列の最初に追加するのでより簡単だと思います。

    PHP: array_unshift – Manual

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    array_unshiftですかー!
    試してみてまた書き込みますね^^

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    できました!

    function custom_bread_crumb( $bread_crumb_arr ) {
        if ( !is_main_site() ) {
          $queue = array( 'title' => 'HOME', 'link' => '/' );
          array_unshift($bread_crumb_arr, $queue);
        }
        return $bread_crumb_arr;
    }
    add_filter( 'bread_crumb_arr', 'custom_bread_crumb' );


    【子ブログ記事での実行結果】
    HOME(ドメインルート) > 子ブログトップ > カテゴリ名 > 記事名

    バッチリです( ^_^)b popupさんありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「WP SiteManagerのパンくずナビで、頭に項目を追加したい」には新たに返信することはできません。