IDを指定して固定ページと投稿のリストを表示する
以前、クライアントさんからの要望でid指定した投稿の一覧を表示するウィジェットを作りました。
特に読んでほしい投稿をピックアップしてサイドバーに表示するという用途に使うウィジェットです。
我ながら結構便利なウィジェットだなと思っていたのですが先日
「固定ページのIDを指定したら表示されない」
という問題を指摘されました。これは困ったと言うことで調べたメモです。
基本的な仕組み
この機能の基本的な仕組みとしては、
- ウィジェットのフィールドにIDをカンマ区切りで入れてもらいう
- get_posts関数で記事の配列を所得
- それをもとにリストを構築
という流れなのですが、get_posts関数はデフォルトでは投稿しか所得しません。だから固定ページのIDを指定しても表示されなかったわけです。
ソースとしては次のように書いていました。
[html]$postslist = get_posts(‘include=’ .$selectID);[/html]
固定ページを所得するにはget_pagesという関数があるのですが、わざわざ2種類使うのは面倒だしムダな感じがします。
幸いなことに、どちらの関数もパラメータに post_type があり色々な投稿タイプの記事を所得できるようになっていました。
post_typeで同時に複数の投稿タイプを指定するときはarryで
最初、includeパラメータのようにカンマ区切りで行けるかなと思い次のように書いてみると
[html]$postslist = get_posts(‘include=’ .$selectID .’&post_type=post,page’ );[/html]
何も表示されなくなってしまいました。
Codexをみても配列に対応しているという記述はなかったので複数の条件を指定できないのかなと思ったのですがarrayで指定すると無事にできました。
[html]$postslist = get_posts(array( ‘include’ => $selectID,’post_type’ => array( ‘post’, ‘page’ ) ) );[/html]
ちなみにpost_typeにanyを指定するとどんなタイプでも表示できるので、なんでも表示していいやという時は下の書き方の方が簡単で良いかもしれません。
[html]$postslist = get_posts(‘include=’ .$selectID .’&post_type=any’ );[/html]
コメント
この記事へのコメントはありません。
コメントをどうぞ