パラメータでカスタマイズしやすいパンくずナビをプラグインにしてみた

@miya0001 さんに、WordPressでパンくずリストを表示するためのプラグイン9個+1を検証で半ば強引に取り上げてもらったパラメータでカスタマイズしやすいWordPressのパンくずナビを作ってみたのコードを一部デバッグして、さらに簡単に使えるようプラグインにしてみました。

とりあえずプラグイン化しただけなので、国際化とかはまだですし、サンプルとなるCSSなども全然作っていませんが、それについても追って公開していきたいと思います。
ただし、Breadcrumb NavXTとの差別化もあって管理画面などの実装は今のところ考えていません。

Download
Prime Strategy Bread Crumb 1.0.0

フィードバックがあれば、是非お寄せ下さい。

使い方

  1. 上記のダウンロードリンクより、プラグインのアーカイブファイルをダウンロードし、解凍後、プラグインディレクトリにアップロードしてください。
  2. プラグイン管理画面より、Prime Strategy Bread Crumbを有効化してください。
  3. テンプレートファイルのパンくずナビを表示したい箇所に、パンくずナビのテンプレートタグを追加してください。パンくずナビの表示は、テンプレートタグのパラメータで色々と変更ができます。パラメータについては、指定可能なパラメータを参照してください。

テンプレートタグ

デフォルトパターン

<?php if ( function_exists( 'bread_crumb' ) ) { bread_crumb(); } ?>
<ul class="bread_crumb">
	<li class="level-1 top"><a href="http://www.example.com/">トップページ</a></li>
	<li class="level-2 sub"><a href="http://www.example.com/category/honda/">HONDA</a></li>
	<li class="level-3 sub"><a href="http://www.example.com/category/honda/sports/">スポーツ</a></li>
	<li class="level-4 sub"><a href="http://www.example.com/category/honda/sports/coupe/">クーペ</a></li>
	<li class="level-5 sub tail current">インテグラ</li>
</ul>

文字列形式

<?php if ( function_exists( 'bread_crumb' ) ) { bread_crumb( 'type=string' ); } ?>
<a href="http://www.example.com/">トップページ</a> &gt; <a href="http://www.example.com/category/honda/">HONDA</a> &gt; <a href="http://www.example.com/category/honda/sports/">スポーツ</a> &gt; <a href="http://www.example.com/category/honda/sports/coupe/">クーペ</a> &gt; <strong class="current">インテグラ</strong>

指定可能なパラメータ

type
stringを指定すると、リストではなく文字列として出力します。デフォルトはlist
home_label
トップページの表示テキスト。デフォルトは「トップページ」
search_label
検索結果の表示テキスト。デフォルトは「『%s』の検索結果」(%sが検索文字列)
404_label
404ページの表示テキスト。デフォルトは「404 Not Found」
category_label
カテゴリーの表示テキスト。デフォルトは「%s」(%sがカテゴリー名)
tag_label
投稿タグの表示テキスト。デフォルトは「%s」(%sが投稿タグ名)
taxonomy_label
カスタムタクソノミーの表示テキスト。デフォルトは「%s」(%sがタクソノミー名)
author_label
寄稿者の表示テキスト。デフォルトは「%s」(%sが寄稿者名)
attachment_label
アタッチメントの表示テキスト。デフォルトは「%s」(%sがアタッチメント名)
year_label
年の表示テキスト。デフォルトは「%s年」(%sが年の数字)
month_label
月の表示テキスト。デフォルトは「%s月」(%sが月の数字)
day_label
日の表示テキスト。デフォルトは「%s日」(%sが日の数字)
joint_string
typeでstringを指定した場合の結合文字列。デフォルトは「&gt;」(>)
navi_element
ラッパー要素名。divまたはnavを選択可能。デフォルトは空(要素無し)
elm_class
ラッパー要素のクラス名。ラッパー要素がなくタイプがリストの場合は、ulのクラス名となる。デフォルトは、「bread_crumb」
elm_id
ラッパー要素のid名。ラッパー要素がなくタイプがリストの場合は、ulのid名となる。デフォルトは、空。(idなし)
li_class
タイプがリストの場合のliに付くクラス名。デフォルトは空(なし)
class_prefix
各クラスに付く接頭辞。デフォルトは空(なし)
current_class
表示中のページのパンくずナビに付与されるクラス名。デフォルトは「current」
indent
タブでのインデント数。デフォルトは0。
echo
出力を行うか。デフォルトはtrue(出力する)。0またはfalseの指定でPHPの値としてreturnする。

更新履歴

2011.08.08 ver. 1.0.0
カスタム投稿タイプアーカイブ表示時の対応を追加。公式ディレクトリにて公開
2011.07.12 ver. 0.8.1
テンプレートタグでパラメータの指定が無かった場合にNoticeエラーが出ていた問題を修正
デフォルトパーマリンクでmパラメータに対応できていなかった問題を修正
2011.06.30 ver. 0.8.0
プラグイン化

「パラメータでカスタマイズしやすいパンくずナビをプラグインにしてみた」への41件のフィードバック

  1. またお邪魔します。
    こちらのプラグインを試していたところ
    デバッグモードでWarningとNoticeが出たのでご報告しておきます。
    WordPress 3.1.4、Prime Strategy Bread Crumb 0.8.0の組み合わせで
    サーバーはローカル(MAMP、PHP Version 5.3.5)です。

    プラグインを有効化し、テンプレートファイルに

    と記述したところ、
    Warning: Missing argument 1 for bread_crumb(), called in /(略)/wp-content/themes/(テーマ)/header.php on line 55 and defined in /(略)/wp-content/plugins/prime-strategy-bread-crumb/prime-strategy-bread-crumb.php on line 339

    Notice: Undefined variable: args in /(略)/wp-content/plugins/prime-strategy-bread-crumb/prime-strategy-bread-crumb.php on line 341
    となりました。
    PHPはあまり詳しくないのですが、
    prime-strategy-bread-crumb.php の 339行目を
    function bread_crumb( $args ="" ) {
    とすることでエラーは出なくなりました。

    いつもこんなコメントですいません・・・。

  2. gatespaceさん

    いえいえ、フィードバックいただけるだけでもありがたい限りです。
    アップデートしましたら、改めてお知らせいたしますね。

  3. gatespaceさん

    お待たせしてしまいましたが、0.8.1へのアップデートを行い、Noticeエラーへの対応を行いました。上部のダウンロードリンクより最新バージョンをダウンロードして上書きをお願いいたします。

    その他お気づきの点などありましたら、またお寄せ下さい。

  4. 対応ありがとうございます。問題なく動作しています。
    こちらこそお返事が遅くなってしまい、申し訳ありません。

  5. こんにちは、このパンくずナビを入れてみたのですが、固定ページにて「Catchable fatal error: Object of class WP_Error could not be converted to string」というエラーが出ます。

    親ページ
    ┗子供ページ
       ┗孫ページ
    といった具合に階層化しているため、孫ページにアクセスした際のURLは「http://hoge.jp/親/子供/孫/」などとなっています。また、子供ページにアクセスした際のURLは「http://hoge.jp/親/子供/」などとなっています。
    この孫ページ・子供ページに表示される「親」へのリンクをクリックすると、上記のエラーが出ます。

    テンプレートタグを設置しているのは、ヘッダテンプレートです。

    使用しているテーマは、ちょっとだけ古いものだと思いますが、改善は可能でしょうか。
    回答お願いいたします。

  6. satoさん、ありがとうございます。

    エラーメッセージにエラーが発生した行番号(line nnn)のような記述も表示されていたかと思います。お手数ですが、その番号も合わせて教えていただけますでしょうか。

    どうぞよろしくお願いします。

  7. 回答ありがとうございます。
    プラグインを全て停止したところ、問題なく動作するようになりました。

    これから、どれに原因があったのか、調べていこうと思います。
    ありがとうございました。

  8. とても使いやすいプラグインをありがとうございます。
    1点質問があります、カスタム投稿、カスタムタクソノミーを使ってウェブサイトを作ってsingule.phpに表示させたら、パンくずリストが以下のようになります。
    トップページ>カスタム投稿>投稿タイトル

    これを

    トップページ>カスタム投稿>カスタムタクソノミー>投稿タイトル

    にするにはどうすればいいのでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です