Custom Post Types Relationships (CPTR) というプラグインをご存じでしょうか。このプラグインは、投稿と投稿や投稿と固定ページ、固定ページとカスタム投稿タイプなど、記事と記事の関連付けが行えるプラグインです。今回は、この Custom Post Types Relationships (CPTR) を使って、手動での関連記事設定と表示する方法をご紹介したいと思います。
関連付けプラグインの比較
この Custom Post Types Relationships (CPTR) 以外にも記事を関連づけ出来るプラグインとしては、Posts 2 Posts もあります。
双方を比較してみると、
Custom Post Types Relationships (CPTR)の優れている点
- 初期設定など不要なため、有効化のみで簡単に利用できる
- カスタムフィールドにデータを保存するため、データの利用も既存の知識で可能
- UIがリッチで使いやすい
- 関連記事のソートが直感的に操作可能
Posts 2 Posts の優れている点
- 関連づけ用の独自テーブルを持つため、双方向で関連付けの参照が可能
- 投稿タイプごとにどの投稿タイプと関連付けるかの設定を行うため、不要な候補を排除することが可能
個人的な感触では、お手軽に使える Custom Post Types Relationships (CPTR) と高機能で応用範囲の広い Posts 2 Posts という印象です。
Posts2Posts については、西川さんのブログ記事 Posts 2 Postsプラグインで、投稿やカスタム投稿タイプ、ユーザを相互に関連付ける(ひも付ける) が詳しいのでそちらを参照してください。
関連付けの設定
Custom Post Types Relationships (CPTR)をインストールすると編集画面に、Custom Post Types Relationships (CPTR) のボックスが追加されるので、投稿タイプや並び順を設定してSearchボタンをクリックすると、候補となる記事のリストが表示されます。この段階でFilter欄に検索したい文字列を入力すると、さらに候補を絞り込むことができるようになっています。
記事のAddボタンをクリックすると、表示がAddedに変わると共に、関連付けが行われ Related Posts欄に記事が追加されます。
関連記事のソート
Related Posts欄内の関連付けられた記事は、ドラッグ出来るようになっていて、視覚的に順序の変更が可能です。
関連記事の削除
Related Posts欄内のRemoveボタンをクリックすると、関連付けを削除できます。
関連記事の表示
設定されている関連記事は、meta_keyが cptr_related のカスタムフィールドに、関連記事のIDが配列で格納されています。つまり、get_post_meta関数を利用して取得することが可能となっています。
あとは、ループ処理を行い記事のデータをget_postで取得し、setup_postdataでテンプレートタグが使えるようにしましょう。(全て使えるわけではありませんのでご注意ください。)
ループが終了したら、wp_reset_postdataを用いて、setup_postdataで上書きした内部変数を戻しておくことを忘れずに。
CODE 1 は、関連記事を表示するためのサンプルコードです。
CODE 1
<?php $related_posts = get_post_meta( $post->ID, 'cptr_related', true ); if ( $related_posts ) : ?> <ul> <?php foreach ( $related_posts as $related_post ) : $post = get_post( $related_post ); if ( $post->post_status == 'publish' ) : setup_postdata( $post ); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endif; endforeach; wp_reset_postdata(); ?> </ul> <?php else: ?> <p>関連する記事はありません</p> <?php endif; ?>
「Custom Post Types Relationships (CPTR)を使って、手動で関連記事の設定と表示を実装する」への1件のフィードバック