更新:2018年06月01日/ろあんぬ(WEB)
WPプラグイン「YARPP」の出力をsingle.phpで実現する方法
こんにちわ!ろあんぬ です。すごく久々のWEB記事です。
WordPressを利用している人なら割と知ってると思われる「Yet Another Related Posts Plugin (YARPP)」ですが、とあるお仕事でどーーしても「専用テーマファイルを介さず直接single.phpで記事のデータを取得」しなければならない状況が発生しまして、そのやり方を調べたのでメモがてら記事にしておこうと思います。
ニッチすぎてたぶんこの情報を必要としてる人がほとんどいない説ある(‘-‘)
まず、普通のYARPPの使い方
ここは余談だからザックリと。
普通の利用方法としては、プラグイン有効化後、管理画面>設定>YARPPのページにてスコア設定を決めた後、表示に関する設定をして保存します。
恐らく表示のスタイルをカスタムしている人が多いと思うのですが、オリジナルのHTMLソースで関連記事を取得する場合、テーマディレクトリに「yarpp-template-thumbnail.php」などのファイルを用意して、設定画面で連携します。
↑こんな感じ。私は自動出力はすべてOFFにし、「関連記事」のカスタムテンプレートを用意しているので、それを選んで保存しております。
single.phpの関連記事を表示したい場所へ、
<?php yarpp_related();?>
と挿入して、保存し、アップします。簡単ですね。
でも、single.phpで直接関連記事の情報を使いたいんです
普通に使う分には上記のやり方で十分すぎるほどなんですが、私が今回やりたいのはsingle.phpで「関連記事のIDを取得すること」なので、上記のやり方ではどうしても実現ができません。
「yarpp-template-thumbnail.php」内に変数を置いて、グローバル変数としてsingle.phpで呼び出せないか?functionにしたらいけるかも??などなど、色々と試したのですがどれもダメ。
ニッチすぎてググっても解決策がまったく出てこないし困り果てたよ。
こういう時はもう公式情報を探すしかない
全部英語だけど仕方がありません。翻訳かけながらreadme.txtファイルを読むことにしましたw
すると、なんかそれっぽいのが書いてあるじゃありませんか。
If you need to use related entries programmatically or to know whether they exist, you can use the functions `yarpp_get_related( $args, $reference_ID )` and `yarpp_related_exist( $args, $reference_ID )`. `yarpp_get_related` returns an array of `post` objects, just like the WordPress function `get_posts`. `yarpp_related_exist` returns a boolean for whether any such related entries exist. For each function, `$args` takes the same arguments as those shown for `yarpp_related` above, except for the various display and template options.
要約すると、「関連記事の情報をプログラムで使用したい場合はyarpp_get_related()かyarpp_related_exist()を使ってください。yarpp_get_relatedはget_postsのようにpostのオブジェクト配列を返します。yarpp_related_existは該当記事があるかどうかbool値を返します。」ということです。
これ使えるじゃん!!
yarpp_get_related()で取得出来る値(必要そうなやつ)
[“ID”] 記事のID
[“post_author”] 作成者
[“post_date”] 投稿日
[“post_content”] 記事情報
[“post_title”] 投稿タイトル
[“post_excerpt”] 抜粋
[“post_status”] ステータス
[“comment_status”] コメントステータス
[“post_name”] スラッグ名
[“post_modified”] 更新日
[“post_parent”] 親投稿のID
[“post_type”] ポストタイプ
[“comment_count”] コメント数
[“score”] 関連記事スコア(だと思う)
他のはまぁほぼ使う事はないオブジェクトのなので省略します。気になる方は、
<?php var_dump(yarpp_get_related()); ?>
とsingle.phpに書いてアップしてみてください。配列の一覧が表示されます。すでに公開されているサイトでダンプさせづらい方は、コメントアウトの中に入れてダンプさせるとプレビュー側には見えないのでオススメです。出力内容は、ソースを確認してください。
yarpp_get_related()の使い方
基本的にはWP関数の「get_posts()」と同じような情報が入っている関数なので、それを使うのと同じようにforeachでechoすることが可能です!
<?php
$yarpp_arg = yarpp_get_related();
if ( $yarpp_arg ) {
foreach ( $yarpp_arg as $yarpp_posts ) {
//記事のID
$postID = $yarpp_posts->ID;
//記事のタイトル
$postTitle = $yarpp_posts->post_title;
echo '<p>'.$postID.'</p>';
echo '<p>'.$postTitle.'</p>';
}
}
?>
こんな感じで、single.php上で関連記事の情報を取得し、表示することが可能です。
関連記事の取得条件などは、何も指定しなければ管理画面で設定した条件で取得されるようになっているので、特に指定しなくても大丈夫です。便利ですね!
この記事を書いた人
ろあんぬ
サイトの制作担当。主にアビスリウム・WEB制作関連の記事を書いています。最近はラグナロクマスターズにハマっています。ほぼブログの更新つぶやきになってるけど一応Twitterもやってます。話しかけてもらえたら反応します!(@roanne_mohulog)
スポンサーリンク