WordPress関数を使ってブログ内に関連記事を設置する方法

Wordpress関数を使ってブログ内に関連記事を設置する方法

訪問してくれたユーザーがサイト内を上手い具合に巡回してもらう為に、必要なブログ内に関連記事の設置方法を紹介します。この関連記事を設置する事により、今まで必要な情報だけ得たユーザーがサイトを閉じる行動以外に、サイト内の関連記事に目が止まりクリックすると言う行動の選択肢も与える事が出来きます。そうする事によりブログ・サイトのクリック数が増え検索順位を上げる事に繋がります。プラグインも有ると思いますが・・・・PHP言語で自作します。説明は単一記事投稿(single.php)ループ内で説明致します。最後のまとめでコピペで使用出来るコード記載をしておきますが投稿IDは自分の投稿ページIDに書き変えて下さい。

 

スポンサーリンク

関連記事をコードを作成する場所

単一記事投稿(single.php)ループ内でコードの作成を行います。関連記事設置場所は前の投稿と次の投稿の前に設置する様にします。

 

Wordpress関数 関連記事 コード作成場所

WordPress関数 関連記事 コード作成場所

 

表示している投稿ページのカテゴリー名を抽出する

WordPress関数get_the_category();を使用して投稿ページのカテゴリー名だけを抽出致します。関数get_the_category();を実行すると以下の情報が取得出来ます。好みの配列の取得方法が有ると思いますが、今回はname(カテゴリー名)でサイト内関連記事を作成したいと思います。※下記の出力情報はカテゴリーをPHPとWprdpressに登録している為2つの値が出力されています。get_the_categoryWordpress関数でterm_id・name・slug term_group・term_taxonomy・taxonomy・description・parent・count・object_id・filter・cat_ID・category_count ・category_description・cat_name・category_nicename・category_pareentの値が取得出来ます。

 

Wordpress関数 get_the_category(); カテゴリー抽出 

WordPress関数 関連記事 get_the_category(); カテゴリー抽出

 

使用したいのはneme(カテゴリー名)だけなので他の情報は要りません。そこで下記コードにて今現在の表示しているページのneme(カテゴリー名)だけを抽出したいと思います。

<?php
$c4=array();
$c3="name";
$c1 = get_the_category();
foreach( $c1 as $c2 ){
  foreach( $c2 as $key => $value ){
    if( $key == $c3 ){
      $c4[]=$value;
    }
  }
}
?>

<?php PHP言語で記述しています。

$c4=array(); $c4で変数宣言してarray(); お決まり複数の数値を代入出来る変数宣言をしています。

$c3=”name”; 取り出したい配列名を指定$c3の変数に入れています。※ここを変更する事により自分好みの配列名の配列値が取得出来ます。お好みでどぞです。

$c1 = get_the_category(); 上記で説明したカテゴリーの値を出力するWordpressの関数です。それをc1変数に配列で入れています。

foreach( $c1 as $c2 ){ foreachはPHPの関数でループ処理です。c1変数に有る配列を一つずつ実行しています。それをc2変数に入れています。※配列から一つずつ変数を取得する方法です。

foreach( $c2 as $key => $value ){ foreachはループ処理です。c2変数をkey配列名value配列値を区別しています。※配列から一つずつ変数を取得する方法です。

if( $key == $c3 ) もしkey配列名がc3変数(neme)と同じで有れば実行する命令になります。

$c4[]=$value $c4変数にvalue配列値を入れています。

以上のコードにより自分が欲しい(今回はneme:カテゴリー名)配列名・配列値が取得出来る様になります。出力値は以下の様になります。

 

Wordpress関数 get_the_category(); カテゴリー抽出2 

WordPress関数 関連記事 get_the_category(); カテゴリー抽出2

 

表示していない投稿IDのカテゴリー名を抽出する

サイト内関連記事を設置する為には現在公開している投稿ページ全てのカテゴリー名が必要になります。その為現在公開している投稿ページを取得してその投稿ページがどの様なカテゴリーで設定されているか?をコード内で処理する必要が有ります。上記とほぼ同じ内容になりますが見てみましょう。

<?php
$kanren = array('49','65','72','150','188','205','250','258','323','403','469','506','527','628','655','647','738','777');
foreach( $kanren as $kanrens ){
  if( get_the_ID() == $kanrens ){
  }
  else{
    $c4=array();
    $c3="name";
    $c1 = get_the_category( $kanrens );
    foreach( $c1 as $c2 ){
      foreach( $c2 as $key => $value ){

        if( $key == $c3 ){

          $c4[]=$value;
        }
      }
    }
  }
}
?>

ページID手打ちで申し訳ないです・・・・どうしても適切な投稿ページID取得のWordpress関数が見つからなかったので手打ちにしました。良いWordpressの関数見つかり次第書き変えます。ちなみにquery posts関数を使用してページIDを取得する方法も有りますが、こちらを使用すると膨大なデータのやり取りが発生してしまう可能性があるので推奨しません。話を戻します。今回追加したのは赤字の部分です。青字は表示している投稿ページのカテゴリー名を抽出するで説明したコードになります。赤字の部分だけ説明します。

$kanren = array(); kanren変数に投稿IDを入力しています。投稿ID=投稿ページを指定する数字になります。取得方法はダッシュボード投稿投稿一覧を表示させます。調べたい投稿タイトルにマウスを合わせるとWordpress画面下にpost=数値が表示されます。その数値が投稿ページIDになります。

 

重複インデックスの確認 canonicalの設置 ページIDの取得

WordPress関数 関連記事 投稿ページIDを調べる方法

 

foreach( $kanren as $kanrens ) foreachはPHPの関数でループ処理です。kanren変数に有る配列を一つずつ実行しています。それをkanrens変数に入れています。

if( get_the_ID() == $kanrens ){ ifはもしって意味です。get_the_ID(); Wordpressの関数で今表示している投稿ページIDを取得しています。==で一致する場合って意味です。その比べる対象がkanrens変数になります。つまり分かり易く言うと今表示している投稿IDと全ての投稿IDで比べて同じIDは以下の処理をして下さいと言う意味になります。しかし{}内にはコード記載をしていませんので実際は何もしない事になります。

else{ 上記に当てはまらなかったらこのコード{}内のコードを実行しなさいと言う意味になります。上記の項目とまとめて完結に説明すると今表示しているページ以外の投稿IDを実行してねって事になります。

以降の処理で全ての投稿ページのカテゴリー名のを取得する事が出来ました。以上のコードで出力される配列値は以下の様になります。

 

Wordpress関数 get_the_category(); カテゴリー抽出3 

WordPress関数 関連記事 get_the_category(); カテゴリー抽出3

 

カテゴリー名が一致するタイトルを出力する

カテゴリーの抽出が終わったので今現在表示してるページのカテゴリーが一致するタイトルの抽出を行いたいと思います。現在表示投稿ページのカテゴリーと残りの全ての投稿ページのカテゴリーを比べて一致する投稿ページIDを取得してWordpressの関数で投稿ページタイトルを表示しています。

<?php
//表示している投稿ページ以外のカテゴリーの取得
$kanren = array('49','65','72','150','188','205','250','258','323','403','469','506','527','628','655','647','738','777');
foreach( $kanren as $kanrens ){
  if( get_the_ID() == $kanrens ){
  }
  else{
    $c4=array();
    $c3="name";
    $c1 = get_the_category( $kanrens );
    foreach( $c1 as $c2 ){
      foreach( $c2 as $key => $value ){

        if( $key == $c3 ){
          $c4[]=$value;
        }
      }
    }
//表示している投稿ページ以外のカテゴリー配列に投稿ページIDを追加する
  $c4 += array('pageid'=> $kanrens );
//表示している投稿ページのカテゴリーの取得 
  $cc4=array();
  $cc3="name";
  $cc1 = get_the_category();
    foreach( $cc1 as $cc2 ){
      foreach( $cc2 as $key => $value ){
        if( $key == $cc3 ){
          $cc4[]=$value;
//表示している・していない投稿ページのカテゴリーが一致する投稿IDの取得と表示
          $key1 = in_array($value, $c4);
          if ($key1) {
            $id = end($c4);
            echo (get_the_title( $id ));
          } 
        }
      }
    }
  }
}
?>

青字の部分は上記にて説明した部分になります。赤字の部分だけ説明致します。※変数名を少し変更しています。

$c4 += array(‘pageid’=> $kanrens ); c4変数に[pageid]配列=kanrens配列値をPHP関数arry();で追加しています。配列追加前はカテゴリー名のみの出力になります。

Wordpress関数 関連記事 配列の追加 arry();1

WordPress関数 関連記事 配列の追加 arry();1

 

$c4 += array(‘pageid’=> $kanrens ); を追加して配列に各投稿ページIDを追加しています。[pageid]=>投稿ページIDの値となります。

 

Wordpress関数 関連記事 配列の追加 arry()2;

WordPress関数 関連記事 配列の追加 arry()2;

 

$key1 = in_array($value, $c4); c4変数の配列値をvalue変数値とin_array(); PHPの関数で比べています。存在する場合TURE(はい)をkey1変数に入れています。存在しない場合はFALSEがkey1変数に入ります。

if ($key1) もしkey1変数がTURE(はい)値が有る場合は以下の条件を実行すると言う記載になります。

$id = end($c4); end(); PHP関数配列の最後の値を取得します。この場合は投稿ページIDを取得する記載内容になります。その対象がc4変数になります。その値をid変数に入れています。

echo (get_the_title( $id )); 最後にget_the_title(); WordPressの関数投稿ページのタイトルを取得する関数になります。その関数にid変数を与えて対象の投稿ページのタイトルを取得して、echoで出力しています。

以上の事により今現在表示している投稿ページのカテゴリーと表示していない全ての投稿ページのカテゴリーを比べて一致する場合、対象の今表示していない投稿ページのタイトルを出力しています。

 

関連記事投稿ページのタイトルをリンクさせる

関連記事で表示されている投稿ページにそのページにスグにジャンプ出来る様にリンクを貼ります。見に来てくれたユーザーに関連記事設置で以前の投稿ページの存在を知らせる事が出来たのにスグにジャンプ出来ないと興味を持ったユーザーもそのままサイトを閉じるかも知れません。そこでタイトルをクリックするとその投稿ページに瞬時に移動出来る様にリンクを貼ります。

投稿ページIDとパーマリンクが一致している場合

上記の記述のecho (get_the_title( $id )); の部分の記述を書き変えてリンクする様にします。

echo (get_the_title( $id )); 

echo ('<a href="http://seoaccessup.top/seo/'.$id.'"target="_blank">'.get_the_title( $id ).'</a>'."</br>");

‘ シングルで囲んでhtmlで反映させます。 . ドットで連結させます。変数部分は ‘ シングルで囲まずPHPで得た変数の値をそのまま使用しています。表示は下記の様になり各リンク先にジャンプ出来る様になっています。

 

Wordpress関数 関連記事 タイトルのリンク処理

WordPress関数 関連記事 タイトルのリンク処理

 

独自のパーマリンクを使用している場合

アドレスを取得する記述をWordpressの関数get_permalink(); を書き変えただけのコード記述になります。

echo (get_the_title( $id )); 

echo ('<a href="'.get_permalink( $id ).'"target="_blank">'.get_the_title( $id ).'</a>'."</br>");

 

関連記事のアイキャッチ画像の設置

上記の事により関連記事のタイトルは表示出来ましたが、なんか寂しいですよね。そこでアイキャッチ画像も表示したいと思います。コードは下記の様になります。

echo ( get_the_post_thumbnail(  $id , $size/2 , $attr ) ."</br>");

get_the_post_thumbnail(); アイキャッチを表示させる為のWordpressの関数になります。()内左から表示したい投稿ページid , アイキャッチサイズ , その他情報になります。アイキャッチサイズの所に/2を追加して初期値150の値を75にしています。表示は以下の様になります。

 

Wordpress関数 関連記事 アイチャッチ設置

WordPress関数 関連記事 アイチャッチ設置

 

関連記事のアイキャッチ画像のリンクの設置

上記のコードだとアイキャッチ画像にリンクが貼られていないので、見に来てくれたユーザーが何処をクリックしたらジャンプ出来るのか?混乱していまう場合が有ります。そこでアイキャッチ自体にもリンクを設置してユーザーの利便性を図りたいと思います。

投稿ページIDとパーマリンクが一致している場合

echo ( get_the_post_thumbnail(  $id , $size/2 , $attr ) ."</br>");

echo ('<a href="http://seoaccessup.top/seo/'.$id.'"target="_blank">'.get_the_post_thumbnail(  $id , $size/2 , $attr ) ."</br>"); 

関連記事投稿ページのタイトルをリンクさせるで紹介した記述を追加してアイキャッチ画像をクリックしても対象の投稿ページにもジャンプ出来る様になりました。

独自のパーマリンクを使用している場合

こちらも独自パーマリンクを使用している人のコードを記載しておきます。

echo ( get_the_post_thumbnail(  $id , $size/2 , $attr ) ."</br>");

echo ('<a href="'.get_permalink($id).'"target="_blank">'.get_the_post_thumbnail(  $id , $size/2 , $attr ) ."</br>");

 

重複表示をしない様にする

このままだとカテゴリーが2つ以上あって、尚且つ同じカテゴリーのページタイトルが2つ関連記事に表示されてしまいます。その対処を行います。重複していた場合横並びで重複するので下記コードで十分です。

if( $id == $checkid ){
}else{

echo ('<a href="http://seoaccessup.top/seo/'.$id.'"target="_blank">'.get_the_title( $id ).'</a>'."</br>");
echo ('<a href="http://seoaccessup.top/seo/'.$id.'"target="_blank">'.get_the_post_thumbnail(  $id , $size/2 , $attr ) ."</br>");
$checkid = $id;
}

if( $id == $checkid ) id変数とcheckid変数が同じ場合は以下のコードを実行すると言うコードになります。投稿IDが重複する場合のコードになります。結局の所空白なので実行しないコードになります。

上記以外だと投稿ページタイトルとアイキャッチを出力して最後に $checkid = $id; 投稿IDをcheckid変数に入れています。

上記説明では分かり難いので簡単に全体の流れを説明します。一番最初に投稿ページIDが見来た時はcheckid変数には勿論値が入っていないのでelseのコードが実行されます。そして投稿IDがcheckid変数に入れられます。次に上記コードが実行された場合、今処理を進めている投稿IDと前回処理した投稿IDを見比べて違えばタイトルとアイキャッチの設置を行います。同じであれば何もしません。以上の事により重複表示をさせない記述になっています。

 

関連記事の設置のまとめ(コピペで使えます投稿IDは変えてね)

関連記事のタイトル・アイキャッチについて説明した来ました。後は投稿ページの説明文が少し欲しいですよね。しかしそれに該当するWordpressの関数が無かったので、手が空いた時にでも作成する予定です。しばしお待ちください。最終的に上記で紹介した単一記事投稿(single.php)ループ内での関連記事設置コードの記載は下記の様になります。

<?php
$cc1 = get_the_category();
$c3 = "name";

//表示している投稿ページ以外のカテゴリーの取得※赤字が投稿ページIDになります。自分のIDに書き変えて下さい。
$kanren = array('49','65','72','150','188','205','250','258','323','403','469','506','527','628','655','647','738','777');
foreach( $kanren as $kanrens ){
  if( get_the_ID() == $kanrens ){
  }
  else{
    $c4 = array();
    $c1 = get_the_category( $kanrens );
    foreach( $c1 as $c2 ){
      foreach( $c2 as $key => $value ){
        if( $key == $c3 ){
          $c4[] = $value;
        }
      }
    }
//表示している投稿ページ以外のカテゴリー配列に投稿ページIDを追加する
    $c4 += array('pageid'=> $kanrens );
//表示している投稿ページのカテゴリーの取得
    $cc4 = array();
    foreach( $cc1 as $cc2 ){
      foreach( $cc2 as $key => $value ){
        if( $key == $c3 ){
          $cc4[] = $value;
//表示している・していない投稿ページのカテゴリーが一致する投稿IDの取得と表示
          $key1 = in_array($value, $c4);
          if ( $key1 ) {
            $id = end( $c4 );

            if( $id == $checkid ){
            }else{
//情報の出力(関連記事の設置)
              echo ('<a href="'.get_permalink($id).'"target="_blank">'.get_the_post_thumbnail(  $id , $size , $attr ).'</a>'."</br>"); 
              echo ('<a href="'.get_permalink($id).'"target="_blank">'.get_the_title( $id ).'</a>'."</br>");
              $checkid = $id;
            }
          }
        }
      }
    }
  }
}
?>

なるべくWordpressの関数はループ外で実行させる様に記載内容を変更しました。文字の大きさ・画像の位置等はCSSで調整すればいいと思いますのでそれも又後日紹介したいと思います。もしサイドバー等でこの記載を使用したい場合は上記記載を関数にして、表示させたい場所で呼び出せば使用出来ると思います。試してないですごめんなさい。

 

ここまで読んで頂いてありがとうございます。これからも分かり易いPHPの説明を勉強しながら行って行きたいと思いますのでどうぞこれからも宜しくお願いします。

 

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です