wp_list_categoriesでリンクなしで投稿数ゼロのカテゴリを表示 – WordPress

スポンサーリンク

WordPress でブログ記事のカテゴリー一覧を表示させる場合、wp_list_categories() という API を使うのが超簡単で便利です。

テンプレートタグ/wp list categories – WordPress Codex 日本語版

この wp_list_categories() を使って、投稿がないカテゴリー(投稿数ゼロのカテゴリ)もリンクなしで表示するカスタマイズを行いましたのでメモ。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

wp_list_categories の引数でパラメータ指定

wp_list_categories() を使うと、以下のように一行でカテゴリ一覧を出力できます。

引数で渡すパラメータ指定である程度のカスタマイズは可能です。が、簡単な反面として若干独自のカスタマイズがしにくい。

今回行ったのが、記事の投稿数が0(ゼロ)のカテゴリーも表示させて、かつ記事の投稿数が 0 のカテゴリーは、リンクにせずにカテゴリー名のテキストのみを表示させるカスタマイズ。ちょうど下記のフォーラムに書いてあるのと同じ仕様です。

WordPress › フォーラム » カテゴリーの表示について

wp_list_categories のデフォルトでは、hide_empty のパラメータがデフォルトで 1 になっていて、投稿数ゼロのカテゴリーはそもそも表示されません。なので、まず投稿数ゼロのカテゴリーを表示させるには、hide_empty=0 を引数に追加します。

これで、投稿数ゼロのカテゴリーが表示される。しかし、これだけだと投稿数ゼロのカテゴリーもリンク付きで表示されてしまうのですね。リンクを辿ってカテゴリーページに移動すると、投稿数ゼロなので中身のないページが表示されてしまう。なので、リンクなしで表示させたいところ。

preg_replace で a href のリンクタグを置換

ちょっと試行錯誤したのですけど、結局スマートに解決する手段が見つからず…。最終的に、preg_replace() を使いました。以下の手順。

1. 引数のパラメータに echo=0 を追加して、出力せずに一旦変数($categories)に格納。
2. preg_replace で投稿数ゼロのカテゴリの a href タグを置換して削除。
3. フォーマット済みのカテゴリー一覧($formatted_categories)を出力。

&hide_empty=0&echo=0 を追加するところがポイントです。投稿数0も非表示にしています。このコードで目的を果たせました。

スポンサーリンク
WordPress は人気ナンバーワンのブログ・ウェブサイトの管理ツールです。PHP を使えればカスタマイズできるので、ぜひトライされてみてください。
 
スポンサーリンク
  • 2件のコメント
  • 金森信行

    Sorry, I sent mail by Hangouts , do you notice it?

    • taka

      I’m sorry but I didn’t know the message.
      I’ll send a message to you tonight. :)

Leave Your Message!