ショートコードを使って、記事に「特定のカテゴリの最新記事」のリンクを3件入れる:【52日目】WordPress1日1プラグイン

ようこそのお運びで、厚く御礼申し上げます。
52日目です。今回はカテゴリ用のショートコードです。
※ショートコードについての説明はこちらの記事をまず見てくださいね。

ショートコードを使って、記事に「特定のカテゴリ」のタイトルリンクを3件入れる

ショートコードを使って、指定した「特定のカテゴリ」のタイトルリンクを3件表示するようにします。また、属性を用いて、件数の変更、並び順も変えるように設定します。

 

ショートコードは「[catPosts ]」として、属性はカテゴリID(id)と、件数(count)、並び順(order)を数値で設定するようにします。 140311-0001 idはカンマ区切りで複数指定できます。
idを入力しない場合は、前回と同じく最新の記事を表示します。

表示はリスト表示です。
デフォルトは3件表示の降順(投稿日の新しいものから)とします。 140311-0003

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

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

//ショートコード名:catPosts
add_shortcode('catPosts', paka3_SCCategoryPosts);

function paka3_SCCategoryPosts($atts) {
  extract( shortcode_atts( array(
      'count' =>3,                  //表示数:
      'order' => 'DESC' ,           //並び順:ASC/DESC,
      'id'    => ""                 //値がない場合は指定なし
      ), $atts) );
  //条件定義
  $args = array(
                   'posts_per_page'=>$count,
                   'orderby'       =>'post_date', //投稿日
                   'order'         =>$order,
                   'category'      =>$id,
       );

  $posts =get_posts( $args );
  if(!$posts) return false;
  //リスト表示
  $list="<div class='catPosts'>";
  $list.="<ul class='mycatlist_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 $list;
 }

ポイントはどこ?

  • 第一引数「$atts」にショートコードで指定した「属性(countやorder)」の値が入ります。shortcode_atts関数で、正当性をチェックデフォルトも設定してしまいます。 (WordPressCodex:shortcode_attsを参照
      extract( shortcode_atts( array(
          'count' =>3,                  //表示数:
          'order' => 'DESC' ,           //並び順:ASC/DESC,
          'id'    => ""                 //値がない場合は指定なし
          ), $atts) );
    
  • 条件定義、デフォルト値の設定を行います。
    //条件定義
      $args = array(
                       'posts_per_page'=>$count,
                       'orderby'       =>'post_date', //投稿日
                       'order'         =>$order,
                       'category'      =>$id,
           );
  •  後は値をget_postsを使ってデータを取得しHTMLを生成します。
  • ショートコードは以下のように記入します。
    1.カテゴリID3の新しい記事を3件表示

    [catPosts id=3]

    2.カテゴリID3と12の新しい記事を3件表示

    [catPosts id=3,12]

    3.自分で値を設定する場合 count(件数)、order(並び順:asc/desc)を設定できます。

    [catPosts id=3 count=10 order=asc]

    ※.カテゴリIDを指定しない場合は最新記事を表示

    [catPosts count=5]

    ※前回の「最新記事を表示」と同様の結果が得られます。

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

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

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

今回のまとめ

カテゴリのショートコードでした。入力制限等は省いています。同じコードを流用している部分もありますが、同じコードを書くことによって「あれ?これでよいんだっけ?」って思う部分も出てきたりしますね。

wordpress1日1プラグイン

コメントを残す

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