閲覧数:430 views
あなたが今、読んでいるカテゴリー:
wordpress
Newpost Catchって?
Newpost Catchは最近の記事の投稿をサムネイル付きで表示してくれる便利なプラグインです。
Newpost Catch|今村だけがよくわかるブログ(プラグイン作成者様のブログです)
カテゴリ別の最近の投稿も表示できるとのことで、最近、筆者も導入しました。バージョン1.10から対応されています。
1.1.0
Compatibility check with WP 3.5.1.
Add option「Display date」「Display sticky post」「Use default css」「Display category(ies)」.
引用元:WordPress Newpost Catch WordPress Plugins
記事が属するカテゴリを自動で表示したい
バージョン1.25の時点では、カテゴリIDを指定すれば、指定したカテゴリの最近の投稿の表示、除外が可能です。これはかなり便利な機能ですね。ですが、現時点では記事が属するカテゴリを自動で判断して表示する機能がありません。うちのような雑記ブログであればこの機能があれば便利なのですが…今後対応されることを期待しています。
なかったら実装しましょう
無いのであれば自分で改造しましょう。今回の対応内容は、
- 投稿記事であれば、その記事が属するカテゴリ、及び子カテゴリの最近の投稿を表示する
- それ以外のページであれば、全カテゴリの最近の投稿を表示する(つまり何もしない)
- タイトルにカテゴリへのリンクも追加する
というものです。筆者がこの機能を使いたかったのでかなり筆者向けのコードです。ですが、追加する改変コードは少し変更を加えれば別のプラグインにも使える内容なので覚えておいて損はないです。筆者は別のプラグインでこのコードを流用して、カテゴリ別の人気ランキングなどを作っています。
変更するPHPファイル
動作を確認した環境
- WordPress バージョン 4.00
- Newpost Catch Version 1.25
変更内容
class.phpの70行目あたりに以下のコードを追加します。
コードをみて頂ければ分かるかとは思いますが、$cat_nowの先頭要素のカテゴリを基準にしています。記事に複数カテゴリが指定されている場合に動かないわけではないですが、考慮はしていません。また$catの条件分岐を入れて、プラグイン側からこのコードを使うかどうかを指定できるようにしたほうが汎用性があるかもかもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
function widget($args, $instance) { extract( $args ); $title = apply_filters('NewpostCatch_widget_title', $instance['title']); $width = apply_filters('NewpostCatch_widget_width', $instance['width']); $height = apply_filters('NewpostCatch_widget_height', $instance['height']); $number = apply_filters('NewpostCatch_widget_number', $instance['number']); $ignore = apply_filters('NewpostCatch_widget_ignore', $instance['ignore_check']['active']); $css = apply_filters('NewpostCatch_widget_css', $instance['css']); $cat = apply_filters('NewpostCatch_widget_cat', $instance['cat']); $post_type = apply_filters('NewpostCatch_widget_post_type', $instance['post_type']); /*if( $instance['ignore_check']['active'] = !false ) { $ignore = 1; } else { $ignore = 0; }*/ //====================================== // ★Custom Hack ここから追加★ //===================================== /* シングルポストであればそのカテゴリと子カテゴリのものに強制的に書き換え */ if ( is_single() ) { /* 現在のカテゴリ-の取得 */ $cat_now = get_the_category(); $cat_now = $cat_now[0]; $now_id = $cat_now->cat_ID; /* カテゴリID */ $now_name = $cat_now->cat_name; /* カテゴリ名 */ $cat_id_list = $now_id; /* カテゴリIDのカンマ区切りリスト */ //子カテゴリを取得し、配列に入れる。カテゴリが空であれば表示しない $cats = get_terms( 'category', array( 'hide_empty' => true, 'child_of' => $now_id ) ); foreach ($cats as $cat ) { $cat_id_list = $cat_id_list.', '.$cat->term_id; } /* 強制的に書き換え */ $cat = $cat_id_list; $title = '<a href="'.get_category_link($cat_now->term_id).'">【'.$cat_now->name.'】</a>'.$title; } //====================================== // ★ここまで★ //====================================== if( !function_exists('no_thumb_image') ){ |
さいごに
雑記ブログであればカテゴリごとにコンテンツを表示することは直帰率を減らすことにつながるので、かなり重要な要素です。ユーザーが閲覧しやすいページを作ることは大事ですね。
参考になりましたら、幸いです。