- 更新日: 2015年4月13日
- WordPress
wp_list_categoriesでリンクなしで投稿数ゼロのカテゴリを表示 – WordPress
WordPress でブログ記事のカテゴリー一覧を表示させる場合、wp_list_categories() という API を使うのが超簡単で便利です。
テンプレートタグ/wp list categories – WordPress Codex 日本語版
この wp_list_categories() を使って、投稿がないカテゴリー(投稿数ゼロのカテゴリ)もリンクなしで表示するカスタマイズを行いましたのでメモ。
wp_list_categories の引数でパラメータ指定
wp_list_categories() を使うと、以下のように一行でカテゴリ一覧を出力できます。
1 |
<?php wp_list_categories('show_count=1&title_li='); ?> |
引数で渡すパラメータ指定である程度のカスタマイズは可能です。が、簡単な反面として若干独自のカスタマイズがしにくい。
今回行ったのが、記事の投稿数が0(ゼロ)のカテゴリーも表示させて、かつ記事の投稿数が 0 のカテゴリーは、リンクにせずにカテゴリー名のテキストのみを表示させるカスタマイズ。ちょうど下記のフォーラムに書いてあるのと同じ仕様です。
WordPress › フォーラム » カテゴリーの表示について
wp_list_categories のデフォルトでは、hide_empty のパラメータがデフォルトで 1 になっていて、投稿数ゼロのカテゴリーはそもそも表示されません。なので、まず投稿数ゼロのカテゴリーを表示させるには、hide_empty=0 を引数に追加します。
1 |
<?php wp_list_categories('show_count=1&title_li=&hide_empty=0); ?> |
これで、投稿数ゼロのカテゴリーが表示される。しかし、これだけだと投稿数ゼロのカテゴリーもリンク付きで表示されてしまうのですね。リンクを辿ってカテゴリーページに移動すると、投稿数ゼロなので中身のないページが表示されてしまう。なので、リンクなしで表示させたいところ。
preg_replace で a href のリンクタグを置換
ちょっと試行錯誤したのですけど、結局スマートに解決する手段が見つからず…。最終的に、preg_replace() を使いました。以下の手順。
1. 引数のパラメータに echo=0 を追加して、出力せずに一旦変数($categories)に格納。
2. preg_replace で投稿数ゼロのカテゴリの a href タグを置換して削除。
3. フォーマット済みのカテゴリー一覧($formatted_categories)を出力。
1 2 3 4 5 |
<?php $categories = wp_list_categories('show_count=1&title_li=&hide_empty=0&echo=0'); $formatted_categories = preg_replace('/<a href=".+"\s*>(.+)<\/a> \(0\)/', '$1', $categories); echo $formatted_categories; ?> |
&hide_empty=0&echo=0 を追加するところがポイントです。投稿数0も非表示にしています。このコードで目的を果たせました。
- WordPress の関連記事
- WordPressをTwitter Bootstrapでレスポンシブデザイン対応
- WordPressブログに更新日を表示
- WordPressにOGP設定・プラグインなしでFacebook/Twitter Cards対応
- WordPressでパンくずリスト・複数の親子カテゴリーを表示
- WordPressでプライベートな非公開ブログを運用
- BackWPupでエラー ERROR: Dropbox API: (35)
- ブログ・WordPress記事をFacebookに自動投稿するIFTTT設定
- RSS Graffitiが終了…代替にはIFTTTが使える
- WordPressで親カテゴリーに属する子カテゴリーの一覧を出力
- WordPressでmeta descriptionを設定(プラグインなし版)
- 2件のコメント
Sorry, I sent mail by Hangouts , do you notice it?
I’m sorry but I didn’t know the message.
I’ll send a message to you tonight.