ブログやメディアサイトの記事の最後、「おすすめ記事」や「あわせて読みたい記事」のようなかたちで
関連記事の一覧表示がありますよね。
以前こちらの記事でも
同じカテゴリーの記事一覧を表示する方法を書いたんですが、今回は、投稿画面にカスタムフィールドを設置して、表示させたい投稿IDをカンマ区切りで入力する方法です。
使用しているのはカスタムフィールドテンプレートです。
カスタムフィールドを「relate_id」にした場合、post_custom(‘relate_id’)の値を、wp_queryのpost__inにarrayでぶちこめばいけるでしょ!!!!
っで甘く見てたんですが、一筋縄ではいきませんでした 、、、、
だめだったコード
<?php $ids = post_custom('relate_id'); $wp_query = new WP_Query(); $param = array( 'post__in' => array($ids), 'posts_per_page' => '-1', ); $wp_query->query($param); if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post(); ?> //ループさせる内容 <?php endwhile; endif; wp_reset_query(); ?>
これだと、いっこめの記事しか表示されないのです、、。
$idsの値が、コンマ区切りの数字の羅列として出力させないといけないのでは、、form?
え、どうすれば、、と思っていたら、フォーラムで全く同じことをされている方を見つけました!!!!
カスタムフィールドの値に指定されたIDの記事をループさせたい
ということで下記の通り書き換えて解決!!
<?php $ids = post_custom('relate_id'); $wp_query = new WP_Query(); $param = array( 'post__in' => explode(',',$ids), 'posts_per_page' => '-1', ); $wp_query->query($param); if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post(); ?> //ループさせる内容 <?php endwhile; endif; wp_reset_query(); ?>
まだまだPHPの勉強が足りません。。がんばります。