WordPress

記事に個別に指定したピックアップ記事のリストを追加する:【11日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。
11日目です。記事の扱いにはだいぶなれてきたかな?というところです。
今回は記事をピックアップして表示させてみたいと思います。

すべての記事の末尾に個別に指定したピックアップ記事のリストを追加する

現在表示している記事の末尾に、手動で選択した記事(ピックアップした記事)のタイトルの一覧を表示します。

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

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

function paka3_pickupContents($contentData) {
   if(is_single()){
     //記事のID指定(配列)
     $ids = array("13","10");

     //検索処理
    $list.="<div id='onlyPost'>";
    $list.="<b>ピックアップ記事</b>";
    $list.="<ul class='onlyPostUl'>";
    foreach($ids as $id){
       $post =get_post( $id );
        //更新日のフォーマット変更
   	$postDate = mysql2date('Y年m月d日', $post->post_modified);
        $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_picupContents');

ポイントはどこ?

  • 引数「$contentData」は記事本文です。
  • is_single()の条件処理
    固定ページ以外のすべての記事ページに表示します。
  • ピックアップしたい記事のIDを配列に入れます。
    記事の並び順は、配列の順番と同じです。

    $ids = array("13","10");
  • 配列をforeachで繰り返し、get_postで記事の情報を取得します。
  • add_filter:指定したフィルターフックに、関数をフックします
    add_filter('フックするフィルター名','呼び出す関数名')
  • get_postsで取得してforeachでまわす場合(get_postで取得したデータの場合)
    パーマリンクにはちょっと小細工が必要($post->guidでは正しくない

    get_permalink($post->id)

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

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

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

今回のまとめ

今回は、ピックアップしたい記事を直接ソースコードに設定しました。今後はこれを管理画面や別の方法で設定できればなぁ、と思ったりしています。もうちょっと先の話かな?とりあえず頑張ろう。

-WordPress
-, ,

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