WordPressでプラグインなしの「関連記事」を作る

WordPressで「関連記事」をプラグインなしでページの下部に設置します。
方法はget_the_category()でページのカテゴリーidを取得し、get_the_ID()でページidを取得し、WP_Queryで表示されているページ以外で、同じカテゴリーの記事を取得します。
このサイトで実際設置している「関連記事」の設定方法を解説します。
関連記事を設置する事はSEOにも重要な役割を果たしています。

ページidとカテゴリーidを取得

現在表示されているページidとカテゴリーidを取得します。

ページidとカテゴリーidを取得するコード

ページidとカテゴリーidを取得するコードの解説

$PostId = get_the_ID()
get_the_ID()はWordPressのタグで現在表示されている投稿ページのidを取得します。
$PostIdは変数で任意の名前です。
$PostId = get_the_ID()は現在表示されている投稿のIDが変数$PostIdに格納されているという事です。

$GetCat=get_the_category();
は変数$GetCatget_the_category()を格納しているという事です。
$GetCatは変数で任意の名前です。
get_the_category()はWordPressのテンプレートタグでオブジェクトつまり現在表示されている投稿ページのカテゴリー情報(id、名前、スラッグ、説明文、属する記事数等)の配列を返します。

$PostCat=$GetCat[0]
は変数$PostCat$GetCat[0]を格納しているという事です。
$GetCat[0]は$GetCatにget_the_category()が、つまり表示されている投稿ページのカテゴリー情報が格納されていて、[0]はカテゴリー情報の配列の最初のものを出力するという事です。

WP_Queryで関連記事を取得

WP_Queryでサイト内の全投稿ページ内から、現在表示されているページと同じカテゴリーの投稿ページを取得しています。

WP_Queryで関連記事を取得するコード

WP_Queryで関連記事を取得するコードの解説

‘cat’=>$PostCat->cat_ID
catはWP_Queryの取得する投稿ページのカテゴリーidを指定するパラメーターです。
$PostCat->cat_IDは変数$PostCatに格納されている情報の中からcat_IDつまりカテゴリーidを取得するという事です。
$PostCatには現在表示されている投稿ページのカテゴリー情報が格納されているので、その中のカテゴリーidを取得するという事です。
つまり‘cat’=>現在表示されている投稿ページのカテゴリーidという事です。

‘post__not_in’ => array($PostId)
post__not_inはWP_Queryのパラメーターで指定した投稿IDのページは除外します。
array($PostId)の$PostIdには「現在表示されている投稿ページのid」が格納されています。
つまり現在表示されている投稿IDを除外するという事です。

残りのコードについては
WordPressのクラスWP_Queryの詳しい解説
をご覧ください。

注意
2018年9月4日まで上記の様に
‘orderby’=>date,’order’=>DESC,
と記載していました。
しかしこれがサーバーのPHP72でエラー予告表示されます。
‘orderby’=>date,’order’=>DESC,」この二つを削除するとエラー警告は消えます。
詳しくは

サイト内リンク:サーバーのPHP72でWp-Queryのエラー | HaradaWeb(ハラダウェブ)

に記載しています。

テンプレートファイルに設置

ページidとカテゴリーidを取得するコード」と「WP_Queryで関連記事を取得するコード」を、独自の「kanren-kiji.php」ファイルを作って記述します。
kanren-kiji.phpファイルをテーマフォルダ内に保存します。

この記事を作った時点でこのサイトでは「Twenty Seventeen」を親テーマとした子テーマを設定してカスタマイズしているので、親テーマTwenty Seventeenの「template-parts/post」フォルダからcontent.phpファイルをコピーして子テーマに保存します。

子テーマの設置方法は後日記事で公開します。

コピーしたcontent.phpの保存場所は親テーマTwenty Seventeenと同様に「template-parts/post」フォルダを作って同じ階層での位置に保存します。

そしてcontent.php内の下部の「</div><!– .entry-content –>」のすぐ上に関連記事となる「kanren-kiji.php」ファイルを呼び出す「」を設置します。

</div><!– .entry-content –>」のすぐ上に設置するのはSEOの関係でentry-content内に設置した方が良いと考えられているからです。

<?php get_template_part( ‘kanren’,’kiji’ ); ?>」は独自のphpファイルをテンプレートファイル内で表示させる時に使うインクルードタグです。

詳しくは
phpファイル内でphpファイルを呼び出すget_template_part
をご覧ください。

具体的な設置位置はこちら。

このcontent.phpをftpソフトでアップロードしたら完成です。
投稿ページの「.entry-content」下の方に関連記事ができていると思います。

アーカイブページで関連記事を消去

アーカイブページで投稿内容の抜粋の下に関連記事が出ていたりするので、その場合は関連記事全体のコードをdiv要素で囲って.archiveでdisplay: none;
を設定すれば解決します。

参考URL

テンプレートタグ/get the category – WordPress Codex 日本語版
関数リファレンス/get the ID

コメントを残す