ようこそのお運びで、厚く御礼申し上げます。
9日目です。さてさて、前回、前々回のカテゴリネタのタグ版です。
記事に「特定のタグの最新記事」のリンクを3件入れる
すべての記事の末尾に、指定した「特定のタグ」の最新記事のタイトルリンクを3件挿入します。
まずは、functions.phpに書いてみます。
では、functions.phpに以下のコードを書きました。
function paka3_TagNewPosts($contentData) { if(is_single()){ //表示するタグを指定する $tag = "タグテスト1"; //条件定義 $args = array( 'posts_per_page'=>3, 'orderby' =>'post_date', //投稿日 'order' =>'DESC', 'tag' => $tag, ); $posts =get_posts( $args ); //リスト表示 $list="<div class='newPosts'><b>".$tag."の最新記事</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; } return $contentData; } add_filter('the_content','paka3_TagNewPosts');
本文
ポイントはどこ?
- 引数「$contentData」は記事本文です。
- add_filter:指定したフィルターフックに、関数をフックします
add_filter('フックするフィルター名','呼び出す関数名') - get_postsの条件定義でタグを指定します。
//条件定義 $args = array( 'posts_per_page'=>3, 'orderby' =>'modified', //更新日 'order' =>'DESC', 'tag' => $tag, ); $posts =get_posts( $args );
- get_postsで取得した更新日のフォーマット定義は、
$postDate = mysql2date('Y年m月d日', $post->post_modified);
- get_postsで取得してforeachでまわす場合(get_postで取得したデータの場合)
パーマリンクにはちょっと小細工が必要($post->guidでは正しくない)get_permalink($post->id)
コードをプラグイン用のファイルにします
それではfunctions.phpに書いたコードを消して、
「paka3_TagNewPosts.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回、タグは単一選択で作ってみました。配列にして…入れ子にして…とかくとわかりにくいですし、この方がプロトタイプとして色々カスタマイズできますからね。とりあえずはわかりやすくです。にしてもタグは、使い方によってはいろんな使い方ができそうですね。