ようこそのお運びで、厚く御礼申し上げます。
5日目です。カテゴリの次は、タグにしましょ!ということで、今回はタグの取得です。
「特定のタグ」のついた記事の末尾に文字列・画像を追加してみる。
4日目のカテゴリと同じく、文字列・画像をすべての記事ではなく、特定のタグのついた記事に表示させるようにしてみます。
まずは、functions.phpに書いてみます。
では、functions.phpに以下のコードを書きました。
function paka3_TagAddContents($contentData) {
if(is_single()){
//タグの指定(配列)
$tags = array("タグテスト1","タグテスト2");
//現在の記事のタグ一覧を取得
$nowTags =array();
foreach(get_the_tags() as $tag){
array_push($nowTags,$tag->name);
}
//検索処理
foreach($tags as $tag){
if(array_search($tag,$nowTags)!==false){
//タグが一つでもあった場合の処理
$str = "<div>タグが「タグテスト1」or「タグテスト2」でしか表示されないよ</div>";
$str .= "<img src='http://www.paka3.net/wp-content/uploads/2014/01/wpicon1.png' alt='1日1プラグイン'>";
return $contentData.$str; //離脱
}
}
}
//条件に合わない場合はそのまま返す
return $contentData;
}
add_filter('the_content','paka3_TagAddContents');
本文
ポイントはどこ?
4日目のカテゴリの時と同じく、タグをどう取得するか?またどう処理をするかというところです。
もっと良い方法があるかもしれませんが、今回はこれで行きます。
- 引数「$contentData」は記事本文です。
- add_filter:指定したフィルターフックに、関数をフックします
add_filter('フックするフィルター名','呼び出す関数名') - 指定する特定のタグは複数でも可能にしています。
$tags = array("タグテスト1","タグテスト2"); - カテゴリの情報を取得するには
get_the_tags() - array_searchは見つかった配列の要素を返すので、0が帰ってきた場合の対処として
array_search($catID,$nowCatID)!==false
- ※1/24:is_single()の条件処理を追加しました。
個別ページ以外のすべての記事ページに表示します。一覧で表示される不具合を回避
コードをプラグイン用のファイルにします
それではfunctions.phpに書いたコードを消して、
「paka3_TagAddContents.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回はほぼ4日目の応用になりますが、タグの取得と、その後の処理をどうするか?という部分がポイントになったと思います。主にタグとカテゴリの分岐ができれば、なんとかなりそうなきがしたので、先にこの処理を行ってみました(カスタムタクソノミーには対応していませんのであしからず)。