wordpressで次の記事とか前の記事のカスタムフィールドの内容を読み込む
記事ナビゲーションではまる
いつもお願いしてるコーダーさんの手が空かないとかでスケジュール的にアレだったので、久しぶりに自分でwordpressの組み込みをしました。PHPとか本当よくわからないです。
で、はまる。凄いハマった。状況としては
- カスタム投稿タイプ「news」の個別記事を表示させている
- 記事下部に前の記事・次の記事的なナビゲーションをつけたい
- ついでにその前の記事にカスタムフィールドの画像を載せたい
- まあここまで来たらテキストフィールドのサブタイトル的なフィールドも載せちゃおっか
という状況で、1まで完成している状態でした。
そして色々試したあげく、ようやく正解にたどり着きました。
次の記事と前の記事のIDをまず取る
<?php $prevpost = get_adjacent_post(false, '', true); //前の記事 $nextpost = get_adjacent_post(false, '', false); //次の記事 ?>
続いて条件分岐を書く
<?php $prevpost = get_adjacent_post(false, '', true); //前の記事 $nextpost = get_adjacent_post(false, '', false); //次の記事 if ( $prevpost ) { ?> 前の記事があった場合の内容 <?php } else{ ?> 前の記事がなかった場合の内容 <?php }?> <?php if( $nextpost ) { ?> 次の記事があった場合の内容 <?php } else{ ?> 次の記事がなかった場合の内容 <?php }?>
こんな感じ。後は入れたい箇所に入れたいものを入れる。
カスタムフィールドの画像を表示させたい!
<img src="<?php echo wp_get_attachment_url(get_post_meta($prevpost->ID,"フィールドのID",true));?>">
次の記事の画像が良い時は$prevpostを$nextpostに。
カスタムフィールドのテキストを表示させたい!
<?php echo nl2br(get_post_meta($prevpost->ID, subtitle, true)); ?>
nl2brはテキストエリアで自動改行していた場合、これ入れておかないと改行してくれないため入れてあります。
次の記事のテキストが良い時は$prevpostを$nextpostに。
普通にタイトルを取得したい
<?php get_the_title($prevpost->ID) ?>
次の記事のタイトルが良い時は$prevpostを$nextpostに。
ちなみにリンクのURLなら以下。
<?php get_permalink($prevpost->ID) ?>
勉強になった!