WordPress

特定のカテゴリの記事に文字列・画像を追加してみる:【4日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。

4日目、なんとか続いてます!
まだまだ、難しいことはできないので、ちょっとずつ応用していきます。

「特定のカテゴリ」の記事の末尾に文字列・画像を追加してみる。

今回は、1日目、2日目の応用で、文字列・画像すべての記事ではなく、特定のカテゴリに表示させるようにしてみます。

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

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

 function paka3_CatAddContents($contentData) {
   if(is_single()){
     //特定のカテゴリID
     $catIDs = array(3,12); //例cat_ID=3と12

     //現在のカテゴリIDを取得
     $nowCatID =array();
     foreach(get_the_category() as $cat){
         array_push($nowCatID,$cat->cat_ID);
         //echo $cat->cat_ID."*";
     }

     //検索処理
     foreach($catIDs as $catID){
       if(array_search($catID,$nowCatID)!==false){
  	 //カテゴリIDが一つでもあった場合の処理
         $str  = "例cat_IDが3と12カテゴリでしか表示されないよ<br />";
         $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_CatAddContents');

本文

ポイントはどこ?

カテゴリをどう取得するか?またどう処理をするかというところです。
もっと良い方法があるかもしれませんが、今回はこれで行きます。

  • 引数「$contentData」は記事本文です。
  • add_filter:指定したフィルターフックに、関数をフックします
    add_filter('フックするフィルター名','呼び出す関数名')
  • 指定する特定のカテゴリのIDは複数でも可能にしています。
    $catIDs = array(3,12);
  • カテゴリの情報を取得するには
    get_the_category()
  • array_searchは見つかった配列の要素を返すので、0が帰ってきた場合の対処として
    array_search($catID,$nowCatID)!==false
  • ※1/24:is_single()の条件処理を追加しました。
    個別ページ以外のすべての記事ページに表示します。一覧で表示される不具合を回避

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

それではfunctions.phpに書いたコードを消して、
paka3_CatAddContent.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。

今回のまとめ

最初「特定のカテゴリ」ということで、一つのカテゴリかな?と考えていたのですが、実際は親カテゴリとか複数カテゴリ等があるのを思い出したので慌てて処理を書き換えてみました。すべてを検証していないので不具合があるかもしれませんが、あったときに追々修正していこうと思います。

-WordPress
-, ,

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