2017年8月30日水曜日

WordPress プラグイン 「List View for Posts」を公式プラグインで公開! #wordpress #plugin

カスタム投稿、投稿、固定ページ、ついでに The Event CalendarのイベントをWPMLプラグインに対応しながら一覧表示するショートコードが使えるようになるプラグイン。もちろんどれを一覧表示に含めるかは設定できます。一覧表示プラグインはいくつかありましたが、一年以上更新されていないものもあり、特にWPMLという特殊なものが入っていてややこしいので必要に駆られて作っちゃいました。

公式プラグイン




ドキュメント


となります。ドキュメントにかけることは全部書いたので、あとは適当に触ってもらったら使えるかなと思います。

TiPS


出力されたHTMLを表示したら、見栄えがわるんだけど?


出力コードは、CSSでデザイン・レイアウト変更できるようにしています。
見栄えに関するCSSコードは一切入っていません。筆者はデザイン力0なので、そのあたりのフォローはしません。そのCSS部分は、テンプレート側のCSSに追加するなどして調整してください。

class の接頭文字を変更してみよう


まぁここはちょっと譲れないところがありますよね。
デフォルトは、 list-view-posts_◯◯ って class が各項目に付きますが、ここの list-view-posts を変更できます。
  • [list-view-posts  html_tag="hogehoge"] 
ってすると、 hogehoge_◯◯ になります。

投稿全部とカスタム投稿(news と faq)を一覧に載せたいんだけど?)


まぁよくあるパターンかと思います。
  • [list-view-posts  post_type="post,news,faq"]
です。基本は降順にソートされて作成日時順に並びます。

予定など未来の記事を載せたいんだけど?


メンテナンス予定などは一番トップに出すために、公開日時をメンテナンス日にして予約投稿を解除するなんて設定をして公開してませんか。そういった場合にでも
  • [list-view-posts  post_status="publish,future"]
で公開済みに加えて、予約済みの記事も一覧表示の対象にします。
これでメンテナンス日の一覧表示もばっちりです。

カテゴリー表示したいんだけど?



上図のように、記事のカテゴリー(お知らせ とか)ごとに色を変えるなどして見せるのはよくやってるサイトありますよね。大丈夫できます。
  • [list-view-posts enable_view_category="true"]
特定の記事に複数のカテゴリーが設定されると、一番最初に取得したカテゴリーを表示します。

別途タクソノミーを追加設定しているけど、それもカテゴリー表示できるの?


はいできます。
種類(追加のタクソノミー):type

をカテゴリー表示に加えたい場合には、既存のカテゴリー(投稿):categoryを加えて次のように記述します。

  • [list-view-posts enable_view_category="true"  category_taxonomy="category,type"]

カテゴリー自体を複数設定(タクソノミー設定)している場合には、それぞれのカテゴリーで指定した最初のカテゴリーを表示します。上図の「お知らせ」のような分類分けがタクソノミー設定しただけ増える可能性があるってことですね(まぁ記事にチェックした場合のみですけど)

どのカスタム投稿の記事か知りたいんだけど?


わかります。複数のカスタム投稿を纏めて一覧にした場合にはややこしいですよね。
できます。
  • [list-view-posts enable_view_post_type="true"]
です。これでカスタム投稿のみ上図「お知らせ」の分類のところに、「カスタム投稿名」が追加されます。

パスワード保護された記事が一覧に出てこないんだけど?


デフォルトでは非表示になっています。
表示したい場合には、次のようにします。
  • [list-view-posts enable_password_protected_post="true"]


ページ送りってできるの?


ページ送りのHTML出力自体はサポートしていませんが、30〜50、50〜70など特定の項目の一覧を出すことができます。
  • [list-view-posts max_items=50  page=1]   =  1〜50
  • [list-view-posts max_items=50  page=2]   =  51〜100
のように、 ($page - 1) * $max_items + 1 〜    $page * $max_items のデータがとれます。これをテンプレートのループで使えば、いけるんじゃない?って感じです。

出力されるHTMLコードを変更したいんだけど?


デフォルトでは、4つのテンプレートが用意されています。
  • [list-view-posts  html_tag="li"]  = <li><span> 系
  • [list-view-posts  html_tag="p"]  = <p><span> 系
  • [list-view-posts  html_tag="dd"]  = <dd><span> 系
  • [list-view-posts  html_tag="pli"]  = <li><p><span></span></p> 系
まぁでも自分のサイトに合わせて変更したいですよね!
そのときにはフックが使えます。
詳しくはドキュメントの「フックの使い方」に事例とサンプルコードを載せたので参考にしてみてください。

2017年8月30日 @kimipooh