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

ようこそのお運びで、厚く御礼申し上げます。
3日目です。今回は、「最新の記事」を3件表示なので…コード書きます。

記事の末尾に最新の記事のリンク付きタイトルを3件挿入する。

全記事から、最新の記事を3件取得して、それを記事の末尾に入れています。

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

では、functions.phpに以下のコードを書きました。
※テンプレートタグを使っていきますが、私は「query_post」は使いたくありません。

 function paka3_newPosts($contentData) {
 //条件定義
   $args = array(
                    'posts_per_page'=>3,
                    'orderby'       =>'post_date', //投稿日
                    'order'         =>'DESC'
		);
   $posts =get_posts( $args );
   //リスト表示
   $list="<div class='newPosts'><b>最新の記事</b>";
   $list.="<ul class='mytaglist_ul'>";
   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>";
   return $contentData.$list;
  }
 add_filter('the_content','paka3_newPosts');

本文

ポイントはどこ?

  • 引数「$contentData」は記事本文です。
  • add_filter:指定したフィルターフックに、関数をフックします
    add_filter(‘フックするフィルター名’,’呼び出す関数名’)
  • get_postsで取得した更新日のフォーマット定義は、
    $postDate = mysql2date('Y年m月d日', $post->post_modified);
  • get_postsで取得してforeachでまわす場合(get_postで取得したデータの場合)
    パーマリンクにはちょっと小細工が必要($post->guidでは正しくない

    get_permalink($post->id)

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

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

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

今回のまとめ

プラグイン作成には、ちょっとだけ慣れたので少しずつコードの練習になっていますね。
「query_posts」が非推奨の命令なので、「get_posts」をもう少し使い慣れた方が良さそうな気がします。
しばらくは「記事(the_content)」フィルターをフックしてプラグインを作ってみようと思います。
慣れれば、管理画面とか別の部分をしてみたいな。

wordpress1日1プラグイン

コメントを残す

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