1年ぶりの投稿です。

 

最近、仕事関係でカスタムフィールドの特定のフィールドが指定された投稿の画像一覧を表示させるのに、なんとか表示は成功したものの、順番を並び替えるのに四苦八苦して、wordpressもほんとに難しいなぁ、などと思っておりました。

本日は、自分のサイトをテコ入れしていて、藤本壱さん著のPHPによるWordPressカスタマイズブック―3.x対応 (私は昔のバージョン対応のものを購入)を久しぶりに開いて、作業をしておりました。

こちらの本は、初歩的なプラグインの作成方法なども書いてあり、ある程度wordpressのphpの意味がわかる方なら、非常に役立つ本だと思います。

私は、カスタムフィールドに緯度経度を入力して、それを地図一覧にも表示するというサンプルテンプレートを幾つか活用させていただきました。

今までの使用例

http://e-jaban.com/wpmu/fukushima/ (トップの地図が該当します)

http://e-jaban.com/wpmu/jan1/ (全国の初日の出の名所を集めました。の部分)

 

そして今回、某サイトで、カスタム投稿タイプを導入、カスタムタクソノミーでソートして表示させたかったんですが、うまく行かず、特定のカスタムフィールドを登録、それによって表示できないかやってみました。

藤本さんのサンプルファイルが

$map_posts = get_posts(array(
'numberposts' => -1,
'meta_key' => 'lat',
'tag_slug__in' => array($post_custom['tag'][0]),
));
 
となっており、'tag_slug__in' => array($post_custom['tag'][0]), の部分を特定のカスタムタクソノミーでソートしたいと思ったのですが・・・
 
以前うまく行ったファイルを参考に書いてみましたが、どうも地図上にマーカーが表示されない。
試しに投稿でやってみたところ、表示された。
ということは、投稿のタイプを指定しないといけないらしい。
 
試しに、記事を書いたカスタム投稿タイプを
     'post_type' => 'hogehoge',
と指定すると表示された。
ただ、困ったのが、カスタム投稿タイプは50個近く指定されていたので、それを全部書いていると大変・・・
 
いろいろ検索した結果、
 
$map_posts = get_posts(array(
        'post_type' => any, 
'numberposts' => -1,
'meta_query' => array(
array(
'key' => 'カスタムフィールドのフィールド名',
'value' => 'フィールドに指定された値'
))
));

ということで、   'post_type' => any,  とすることで、カスタム投稿タイプも無事に表示されました。

ヒントを見つけたのは、こちら。

http://ja.forums.wordpress.org/topic/5747 のquery_posts('post_type=any&com_category=new'); のくだり。

それで検索したら見つけました、これ。

http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts

  • post_type (string / array) – 投稿タイプを用いて指定する。初期値は post';

    • 'post'
    • 'page'
    • 'revision'
    • 'attachment'
    • 'any' – revision以外すべてのタイプ
    • Custom Post Types (例: movies)

なるほど、初期値はpostだったのか・・

いやーーwordpressはやっぱり難しいなぁと。でもこうしていろいろ試す中で知ることもできるので、面白いな、とも。

普通の人には全く理解不能な書き込みですが、自分の覚書として書いておきます。