• 締切済み

wordpressで、質問です。

投稿画面にAdvanced Custom Fields のプラグインを入れて、カスタム投稿ページeventに 日付の入力エリアをJQのデータピッカーで表示させました。 開催場所も、同じプラグインでテキストエリアで設置して入力するようにしました。 日付は、データピッカーから入力したら「2015/06/15」の形でデータベースのwp_postmetaのmeta_key「event」の meta_valueに入ります。 開催場所をテキストで入力すると「▽□△ホール」という形でデータベースのwp_postmetaのmeta_key「scene」の meta_valueに入ります。 例えば、カスタム投稿記事でwp_posts の ID88 post_type が event の記事にたいして wp_postmeta に meta_id に 220、 post_id が 88 、meta_key に event 、meta_value に 2015/06/15 。 meta_id に 220、 post_id が 88 、meta_key に scene 、meta_value に ▽□△ホール と入ります。 この場合に、カスタム投稿でeventに投稿した、post_id88の記事情報に開催場所と日付のデータをくっつけて詳細ページに表示するには どのようにしたら良いのでしょうか。 sqlでSELECTで一回目、wp_posts でデータをとり、 二回目、wp_postmeta で開催日をとり 三回目、wp_postmeta で場所をとり 表示する と考えましたらなんだかナンセンスで、長々しくなってしまいました。 まとめて書こうと、しましたらデータが1件の投稿につき2個づつ出てしまい、困っています。 また、meta_valueはlongtxt型なのですが、入っている2015/06/15のデータをDATE型にして絞り込みや並べ替えをしたいのですが どのようにしたら良いでしょうか。

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

WordPressにAdvanced Custom Fieldsプラグインを追加すると、テンプレートタグも追加される。 the_content()で取得されたpost_id88を表示する際に <?php the_field('scene'); ?> にてこの場所に「場所」が表示される。 <?php echo get_the_field('scene'); ?> でも同様。こちらは生データなので加工した後でフィルターかけて表示すべきだ。 <?php the_field('event') ?>で「日付」を表示だ。 Advanced Custom Fieldsプラグインを導入したら追加されるテンプレートタグの一覧は http://www.advancedcustomfields.com/resources/ のページ中ほど「Functions」を参照の事。 ただし、これらのテンプレートタグはAdvanced Custom Fieldsプラグインを無効にしたりアンインストールすると使えなくなる。 ~~~~ ところでwp_postsの中からカスタム投稿タイプの投稿をSQLで得ようとしている理由はなんだ? WordPress本体の中ではWP_Query()という機能でSQL文を書かずにいろんな情報を得る事ができる。 <?php $query = new WP_Query( 'p=88' ); ?> とか <?php $query = new WP_Query( 'post_type=event' ); ?> とか。 カスタムフィールドの値で取得する投稿を並び替えるとかは <?php $query = new WP_Query( array( 'orderby' => 'meta_value', // カスタムフィールドの値で並び替え 'order' => 'DESC', // (日付で言うところの)新しいものから古いものへ 'post_type' => 'event', // カスタム投稿タイプイベントの方のevent 'posts_per_page' => 5, // MAX5件 'meta_key' => 'event' // カスタムフィールド日付の方のevent ) ); ?> で行けるんじゃないか。 絞りこみもWP_Queryに meta_value => '2015/10/10' とかすればできるかも。ただ、日付型としてがんばってくれるかどうかは分からない。

関連するQ&A