WordPress

記事に「現在のタグの最新記事」のリンクをタグ毎に3件入れる:【10日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。
10日目です。現在のタグについての処理です。

記事に「現在のタグの最新記事」のリンクをタグ毎に3件入れる

現在表示している記事の末尾に、「現在の記事のタグの最新記事のタイトルリンクを3件挿入します。複数のタグがついている場合は、それぞれ3件ずつ表示する

まずは、functions.phpに書いてみます。

では、functions.phpに以下のコードを書きました。

  function paka3_NewNowTagPosts($contentData) {
   //個別ページ以外の記事ページにて表示
   if(is_single()){
     //現在の所属しているタグをforeachでまわす
     $list="";
     foreach(get_the_tags() as $tag){
       //条件定義
       $args = array(
   		   'posts_per_page'=>3,
   		   'orderby'       =>'post_date', //更新日
   		   'order'         =>'DESC',
   		   'tag'      => $tag->name,
   	);
       $posts =get_posts( $args );

       //リスト表示
       $list.="<div id='NewNowTag_".$tag->term_id."'>";
       $list.="<div class='newPosts'><b>タグ:".$tag->name."の最新記事</b>";
       $list.="<ul class='mytaglist_ul'>";
       //取得した最新記事をforeachでまわす
       foreach($posts as $post){
   	//更新日のフォーマット変更
   	$postDate = mysql2date('Y年m月d日', $post->post_date);
          $list.="<li><a href='". get_permalink($post->ID)."'>".$post->post_title."(更新日:".$postDate.")</a></li>";
       }
       $list.="</ul></div></div>";
     }
     return $contentData.$list;
   }

   return $contentData;
  }
 add_filter('the_content','paka3_NewNowTagPosts');

ポイントはどこ?

  • 引数「$contentData」は記事本文です。
  • is_single()の条件処理
    個別ページ以外のすべての記事ページに表示します。
    一覧で表示される不具合を回避
  • add_filter:指定したフィルターフックに、関数をフックします
    add_filter('フックするフィルター名','呼び出す関数名')
  • 現在のタグの情報を取得するにはget_the_tags
    //タグ毎に処理をする場合
    foreach(get_the_tags() as $tag){
      //処理
    }
  • get_postsで取得した更新日のフォーマット定義は、
    $postDate = mysql2date('Y年m月d日', $post->post_modified);
  • get_postsで取得してforeachでまわす場合(get_postで取得したデータの場合)
    パーマリンクにはちょっと小細工が必要($post->guidでは正しくない

    get_permalink($post->id)

コードをプラグイン用のファイルにします

それではfunctions.phpに書いたコードを消して、
paka3_NewNowTagPosts.php」というファイルを作成し、以下のコードを記入します。

このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。

今回のまとめ

タグの処理については、まだまだ条件分岐等に利用できそうだなと思う反面、管理が難しいのではと思ったりもします。あくまでも「目印」なので、タグを使ってすごい処理をする!というのは最終手段にした方がいいのかも…でも…色々してみたい。だからWordpressでできることをもうちょっと知ってみるといいかもしれませんね。

-WordPress
-, ,

Copyright© アルパカ@ラボ , 2024 All Rights Reserved Powered by AFFINGER5.