[wordpress]ページ階層をメニューにして出力するプラグイン

wordpressをさわっています。人気が出るだけのことはあって、APIがしっかりしていますね。
ところで、こういうメニューって、企業サイトでよくあるじゃないですか?(「事業」とかにマウスを載せてみてください)

@import url(http://blog.mogya.com/2009/01/25/style.css);


wordpressのページ機能を使って上のような階層を作ったら、そこからメニュー用のHTMLを生成してくれるプラグインというのを作ってみました。
mogya_menu_plugin-0.1.zip

インストール

他のプラグインと同様に、ダウンロードして解凍して、pluginsディレクトリに配置すればOKです。

使い方

 テンプレートの中で、

<div class="horizontal_menu">
<?php insert_mogya_navigationMenu(""); ?>
</div>

と書くと、その部分にメニュー用のHTMLが出力されます。

style.cssの内容をご自分のテンプレートのstyle.cssに追記してあげると、上であげたようなメニューができあがります。

機能

メニューの並び順については、wordpressでの指定が尊重されます。つまり、wordpressページの編集画面で「属性-順序」の数値を変えることで、自由に並べ替えることが出来ます。

文字列だけでなく、メニューに画像を使うことも可能です。

ページの編集機能で、「navigationMenu_title」というプロパティを作成すると、メニューのタイトル部分に設定されます。たとえば、navigationMenu_titleに

<img src="/images/icon1.gif" alt="ホーム" width="83" height="18" />

と言うように記述すれば、タイトル部分にimgタグが出力されるので、文字列の代わりに画像を使ったメニューを実現できるようになります。

また、リンク先を置き換えることも出来ます。最初のサンプルで、「ホーム」というメニューがありますが、これは、navigationMenu_linkというカスタムフィールドに「/」を設定することで実現できます。もちろん、普通のWEBサイトのURLを記述すれば、そのURLへのリンクになります。

全部のページをメニューに出すのではなくて、特定のページより下だけをメニューにすることも出来ます。たとえば、「menu」というページを作ってそれより下だけ出力したい時は、

<div class="horizontal_menu">
<?php insert_mogya_navigationMenu("menu"); ?>
</div>

というふうにします。

カスタマイズ

出力されるHTMLでは、dropdown,dropdown_parent,dropdown_childというクラスが使われています。それぞれ

  • dropdown_parent:親メニュー(上の例で言うなら、「会社概要」の部分)です
  • dropdown_child:子メニュー(上の例で言うなら、「アクセス」「ご挨拶」の部分)です
  • dropdown:dropdown_parentとdropdown_childを含むひとかたまりです

となっています。style.cssに、メニューを縦に並べる例と横に並べる例を記述してあるので、参考にしてください。

制限

ページ階層は2段階までしか対応していません。これ以上深い階層をサポートしても実用的でないような気がするので、対応する予定もありません。

まとめ

こういうのがなくて固定でHTMLを出力してしまうと、お客さんに納品した後、お客さん自身がメニューを変更できないのでとっても不便なことになります。このプラグインを使うことで、お客さんが自分でページを追加してもメニューに反映されるようになるので、なかなかいけるんじゃ無かろうか、と思うのですけど、いかがでしょう?

wordpressのプラグインは初めてなので、感想を聞かせていただけると嬉しいです。