ようこそのお運びで、厚く御礼申し上げます。
53日目です。今回はタグ用のショートコードで、以前書いたコードの改訂版です。
※ショートコードについての説明はこちらの記事をまず見てくださいね。
ショートコードを使って、記事に「特定のタグ」のタイトルリンクを入れる
ショートコードを使って、指定した「特定のタグ」のタイトルリンクを3件表示するようにします。また、属性を用いて、件数の変更、並び順も変えるように設定します。
ショートコードは「myTagList 」として、属性はタグ(tag)と、件数(count)、並び順(order)を数値で設定するようにします。 タグは「+」区切りで複数指定でAND処理ができますできます。
idを入力しない場合は、最新の記事を表示します。
表示はリスト表示です。
デフォルトは3件表示の降順(投稿日の新しいものから)とします。
まずは、function.phpに書いてみます。
では、function.phpに以下のコードを書きました。
add_shortcode('myTagList','shortCode_tagList'); function shortCode_tagList($atts){ //ショートコードに定義した値を取得&デフォルト値 extract( shortcode_atts( array( 'count' =>3, //表示数: 'order' => 'DESC' , //並び順:ASC/DESC, 'tag' => '' //タグ名+(&) ), $atts) ); //条件定義 $args = array( 'posts_per_page'=>sprintf(esc_html("%s"),$count), 'orderby' =>'post_date', //投稿日 'order' =>sprintf(esc_html("%s"),$order), 'tag' =>sprintf(esc_html("%s"),$tag)); $tagPost =get_posts( $args ); //リスト表示 $list="<ul class='mytaglist_ul'>"; foreach($tagPost as $tag_post){ $list.="<li class='mytaglist_li'><a href='".get_permalink($tag_post->ID)."'>".$tag_post->post_title."</a></li>"; } $list.="</ul>"; return $list; }
ポイントはどこ?
- 第一引数「$atts」にショートコードで指定した「属性(tagやcountやorder)」の値が入ります。shortcode_atts関数で、正当性をチェックしデフォルトも設定してしまいます。 (WordPressCodex:shortcode_attsを参照)
extract( shortcode_atts( array( 'count' =>3, //表示数: 'order' => 'DESC' , //並び順:ASC/DESC, 'tag' => '' //タグ名+(&) ), $atts) );
- 条件定義、デフォルト値の設定を行います。
esc_htmlを使って属性の値を、エスケープします。
※htmlタグの入力等許可させない。$args = array( 'posts_per_page'=>sprintf(esc_html("%s"),$count), 'orderby' =>'post_date', //投稿日 'order' =>sprintf(esc_html("%s"),$order), 'tag' =>sprintf(esc_html("%s"),$tag));
- 後は値をget_postsを使ってデータを取得しHTMLを生成します。
- ショートコードは以下のように記入します。
1.タグ「gitHub」がついている記事を新しい順に3件表示します。[myTagList tag=gitHub]
2.タグ「gitHub」と「wordpress」がついている記事を新しい順に3件表示
[myTagList tag=gitHub+wordpress]
3.自分で値を設定する場合 count(件数)、order(並び順:asc/desc)を設定できます。
タグ「gitHub」がついている記事を、古い順に5件表示。[myTagList tag=gitHub count=10 order=asc]
コードをプラグイン用のファイルにします
それではfunction.phpに書いたコードを消して、 「paka3_shortCodeCategoryPostLinks.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回は、この「1日1プラグイン」を始める前に書いたコードの改訂版です。前のコードをみると、理解していないで書いたであろう部分もみれますね。でも、逆に「エスケープが必要」というものも再度確認できたと思います。