【メモ】bbpress+賢威8でパンくずリストの内容が異なる

この記事は、賢威8にbbpressを設置した際に行ったカスタマイズ内容のメモです。

bbPress

カスタマイズ経緯

bbpressは、次のようにパンくずリストが表示されます。

bbpressのパンくずリスト

一方賢威8は、フッター上で次のようにパンくずリストが表示されます。

賢威8のパンくずリスト

よく見ると…
同じページなのに、表示されている内容が違います!

ということで、賢威8側の表示内容をbbpressに合わせてみることにしました。

カスタマイズ内容

今回のカスタマイズは、

  • コードの追加
  • テンプレートの書き換え

を行います。

1:コードの追加

コードの追加前の準備

次の記事の方法で、カスタマイズの準備を行います。

カスタマイズ用コード

準備した自作プラグインに次のコードを貼りつけます。

  • function my_the_keni_breadcrumbs(){
  • switch(get_post_type()){
  • case "topic":
  • case "forum":
  • my_the_keni_breadcrumbs_make();return;
  • default:
  • the_keni_breadcrumbs();return;
  • }
  • }
  • function my_the_keni_breadcrumbs_make(){
  • $ar = bbp_get_breadcrumb();
  • $ar = preg_replace('/<span.*?bbp-breadcrumb-sep.*?<\/span>/su','',$ar);
  • $ar = preg_replace('/<\/p>/su','</ol></nav>',$ar);
  • $ar = preg_replace('/<span.*?bbp-breadcrumb-current.*?>(.*?)<\/span>/su','<li>$1</li>',$ar);
  • $ar = preg_replace('/<div.*?bbp-breadcrumb.*?<p>/su'
  • ,'<nav class="keni-breadcrumb-list"><ol class="keni-breadcrumb-list_inner" itemscope="" itemtype="http://schema.org/BreadcrumbList"><li itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">',$ar);
  • $cont=0;
  • $ar = preg_replace_callback('/<a.*?href="(.*?)".*?>(.*?)<\/a>/su',
  • function ($matches) {
  • $cont++;
  • return '<li itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">'
  • .'<a itemprop="item" href="'.$matches[1].'">'
  • .'<span itemprop="name">'
  • .((strcmp($matches[2],'ホーム')===0) ? get_bloginfo( 'name' ).'</span> TOP' : $matches[2] . '</span>')
  • .'</a>'
  • .'<meta itemprop="position" content="'.$cont.'">'
  • .'</li>';
  • },
  • $ar);
  • echo $ar;
  • }
AFFS Simple Code Viewer
Copy

処理の内容

【2~7行】bbpressの投稿タイプなら、my_the_keni_breadcrumbs_make()を実行。それ以外は、賢威8のパンくずリスト作成関数を実行

【11行】bbpressのパンくずリスト作成関数を実行して、bbpress標準のパンくずhtmlを取得

【12~31行】bbpress標準のパンくずhtmlを、賢威8のパンくずリストと同じ形式に書き換え

【33行】書き換えたパンくずhtmlを表示

2:テンプレートの書き換え

子テーマをインストールして有効にしてある場合は、親テーマの”template-parts\part-breadcrumbs.php”を子テーマにコピーします。

/wp-content/themes/keni8_wp_xxxxxxx

┣ template-parts ┳ part-breadcrumbs.php

/wp-content/themes/keni8-child

┣ template-parts ┳ part-breadcrumbs.php
(↑フォルダ作成)(↑親テーマからコピー)

子テーマを使用していない場合は、親テーマの”template-parts\part-breadcrumbs.php”を直接書き換えます。

※親テーマを書き換えた場合、テーマバージョンアップ時に変更した内容が消えます。
そのため、子テーマを用意することをおススメします。

”template-parts\part-breadcrumbs.php”の内容

  • <?php if ( ! ( is_front_page() && ! is_paged() ) ) : ?>
  • <!--▼▼ パン屑リスト ▼▼-->
  • <div class="keni-breadcrumb-list_wrap">
  • <div class="keni-breadcrumb-list_outer">
  • <?php the_keni_breadcrumbs(); ?>
  • </div><!--keni-breadcrumb-list_outer-->
  • </div><!--keni-breadcrumb-list_wrap-->
  • <!--▲▲ パン屑リスト ▲▲-->
  • <?php endif; ?>
AFFS Simple Code Viewer
Copy

5行目を次のように書き換えます

  • <?php my_the_keni_breadcrumbs(); ?>
AFFS Simple Code Viewer
Copy