ようこそのお運びで、厚く御礼申し上げます。
52日目です。今回はカテゴリ用のショートコードです。
※ショートコードについての説明はこちらの記事をまず見てくださいね。
ショートコードを使って、記事に「特定のカテゴリ」のタイトルリンクを3件入れる
ショートコードを使って、指定した「特定のカテゴリ」のタイトルリンクを3件表示するようにします。また、属性を用いて、件数の変更、並び順も変えるように設定します。
ショートコードは「[catPosts ]」として、属性はカテゴリID(id)と、件数(count)、並び順(order)を数値で設定するようにします。 idはカンマ区切りで複数指定できます。
idを入力しない場合は、前回と同じく最新の記事を表示します。
表示はリスト表示です。
デフォルトは3件表示の降順(投稿日の新しいものから)とします。
まずは、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」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
カテゴリのショートコードでした。入力制限等は省いています。同じコードを流用している部分もありますが、同じコードを書くことによって「あれ?これでよいんだっけ?」って思う部分も出てきたりしますね。