(記事内リンクにPR含む場合があります)

【WordPress】Newpost Catchのサムネイル付き新着情報から現在記事を除く方法

WordPressプラグイン

孔雀/くじゃく

WordPressプラグイン「Newpost Catch」は最新記事をサムネイル付きで一覧表示できます。前回記事でカテゴリー別に表示する方法を書きました。今回は今読んでいる記事を除く方法を共有します。

それに加えて、現カテゴリーIDの取得コードも使いやすく改良したので差し替えてみます。

ゆめぴょんです。こんちはっ(^^)/

プラグイン「Newpost Catch」のインストールや基本的な設定方法については、前回の記事を参考にしてください。「現在見ている記事」のカテゴリーの新着一覧を表示する設定については今回も改良バージョンで紹介します。好きな方を選んでください。

「Newpost Catch」でできること。可能になったこと

前回記事を読まない人のために、同じ内容ですが再掲しておきます。そして前回と今回のプラグイン修正により可能になったことも加筆しました。

  1. 新しい記事から順に表示できる
  2. 表示する件数を指定できる
  3. サムネイル画像つき。サイズも指定できる
  4. 投稿日の表示・非表示を切り替えられる
  5. 指定カテゴリの新着記事だけ表示できる
  6. CSSは標準装備だけど、自分で設置も可能
  7. 先頭に固定表示できる
  8. (前回記事)年月日をリンクをはずして表示
  9. (前回 or 今回)「いま見ている記事」のカテゴリーの、新着一覧のみ表示
  10. (今回記事)現在見ている記事を、新着一覧から除く

「Newpost Catch」で現在記事のカテゴリ一覧を表示する設定方法

まずは前回も説明した、カテゴリー別の一覧を表示する設定についてです。なおカテゴリー別の設定を行わない場合でも、1つめのコードは「今見ている記事を除く」設定で利用するため設置する必要があります。

カテゴリー情報の取得コードを設置する方法(1〜2階層のブログ向け)

カテゴリー情報の話をする時には、1層構造、2層、3層以上や、2つ以上のカテゴリーを選択している場合など多種多様な条件分岐が必要になります。ここでは1〜2層構造で、親と子のカテゴリーから1つづつを選べる場合の説明をします。

3層以上の場合や、所属する複数のカテゴリー全てに属する記事一覧を表示したい場合は、カテゴリー情報をループで取得した後に、全てのカテゴリーをカンマ区切りで代入すればOKだと思います。

下のソースコードをテーマファイルのヘッダー部分「header.php」などにコピーしてください。一番最初にカテゴリー情報を使う箇所より前であればどこでも設置OKです。headタグの上の方でいいでしょう。

なおテーマファイルはWordPressで最も重要なファイルの1つなので、修正を加える前には必ずバックアップをとってくださいね。そして問題が起こったらすぐに元に戻してください。修正は自己責任でお願いします。

[php highlight=”3,4,7″]
<?php
global $_cate;
global $_postid;
$_postid = 0;

if( is_single() ) { // 記事
$_postid = get_the_ID();
$cat = get_the_category();
$_cate = array (
‘id’=>$cat[0]->term_id,
‘name’=>$cat[0]->name,
‘alink’=>get_category_link( $cat[0]->term_id ),
‘count’=>$cat[0]->count,
‘parent_id’=>$cat[0]->parent,
‘parent_name’=>get_the_category_by_ID($cat[0]->parent,
‘parent_alink’=>get_category_link($cat[0]->parent)
);
} elseif( is_category() ) { // カテゴリ一覧ページ
$cat_name = single_cat_title( ”,false );
$cat = get_term_by(‘name’, $cat_name, ‘category’);
$_cate = array (
‘id’=>$cat->term_id,
‘name’=>$cat_name,
‘alink’=>get_category_link( $cat->term_id ),
‘parent_id’=>$cat->parent,
‘parent_name’=>get_the_category_by_ID($cat->parent),
‘parent_alink’=>get_category_link($cat->parent)
);
} ?>
[/php]

今回のソースコードには現在見ている記事のID(Post ID)を取得するハイライト部分が追加されています。当初は「Newpost Catch」のPHP内で取得を試みたのですがうまくいかなったため、ヘッダで取得してグローバル変数にしました。

私はこのグローバル変数を、人気記事一覧から「現在見ている記事」を除く時にも利用しています。次の記事には反映していませんが「$post_id」の部分を「$_postid」に変更するだけで使えます。「global $_postid;」の定義は忘れないように。

1層のカテゴリー構造の場合は、上のソースから「parent_」を含む行を削除してもOKです。

現在記事のカテゴリーの最新一覧を表示する設定方法

プラグインのファイルを直接書き換えることになるため、失敗すると画面が真っ白になったりします。必ずバックアップをとってから行ってください。問題が発生したらすぐに元のファイルに戻してください。修正は自己責任でお願いします。

プラグインファイルの修正方法がわかる方は、下のソースコードのハイライト行を追加・変更してください。

プラグインファイルの書換え方法が分からない方は、WordPress管理画面の「プラグイン」→「プラグイン編集」を選択。右のメニューから「Newpost Catch」を選んで「選択」ボタンをクリック。

右のファイルメニューから「newpost-catch/class.php」をクリック。「function widget」を検索。下のソースコードのハイライト箇所を追加・変更してください。「global $_cate;」は上で定義したグローバル変数です。

変更箇所は、下のソースコードのハイライト部分です。なお親カテゴリーも含めたい場合は、11行目に「,$_cate[‘parent_id’]」を加えればOKです。

[php highlight=”2,11″]
function widget($args, $instance) {
global $_cate;
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 = $_cate[‘id’];
[/php]

現在見ている記事を除く設定方法

上と同じプラグインファイルを変更します。この章から読んでいる人のために、注意書きとファイル選択までの流れを再掲します。

プラグインのファイルを直接書き換えることになるため、失敗すると画面が真っ白になったりします。必ずバックアップをとってから行ってください。問題が発生したらすぐに元のファイルに戻してください。修正は自己責任でお願いします。

プラグインファイルの修正方法がわかる方は、下のソースコードのハイライト部分のように追加・変更してください。

プラグインファイルの書換え方法が分からない方は、WordPress管理画面の「プラグイン」→「プラグイン編集」を選択。右のメニューから「Newpost Catch」を選んで「選択」ボタンをクリック。

右のファイルメニューから「newpost-catch/class.php」をクリック。「WP_Query」を検索。下のソースコードのハイライト箇所を追加・変更してください。「global $_postid;」は上で定義したグローバル変数です。

ちなみに現時点の「Newpost Catch」のバージョンは「1.1.5」です。これより新しいバージョンでは既に対応しているかも知れないため、必ずその時点での機能を確認してから変更するようにしてください。

[php highlight=”1,12,21″]
global $_postid;
$sticky = get_option( ‘sticky_posts’ );
if( $ignore == !false ){
/*
if( ($number – count($sticky)) > 0 ){
$number = ($number – count($sticky));
}
*/
$npc_query = new WP_Query( array(
‘cat’ => $cat,
‘posts_per_page’ => $number,
‘post__not_in’ => $_postid,
‘ignore_sticky_posts’ => 0,
‘orderby’ => ‘date’,
‘order’ => ‘DESC’
));
} else {
$npc_query = new WP_Query( array(
‘cat’ => $cat,
‘posts_per_page’ => $number,
‘post__not_in’ => array($sticky, $_postid),
‘ignore_sticky_posts’ => 1,
‘orderby’ => ‘date’,
‘order’ => ‘DESC’
));
}
[/php]

ファイルの修正が終わったら保存して確認してみてください。新着記事一覧から「現在見ている記事(新着に表示されるくらい新しい記事)」が除かれているでしょうか。

ちなみに前回の記事でうまくいかなった理由は21行目にありました。「post__not_in」が「post_not_in」になっていました。私の入力ミスなのか元々の間違いなのかは、元ファイルを確認してないので分かりません。上のとおりで動作します。

まとめ:今日のゆめぴょんの知恵

わかってしまえば意外と簡単にできました。これで1つでも多くの記事を紹介できるようになりました。ブログ訪問者にもメリットになりますし、Googleに対しても内部リンクを示せるのでSEO対策にもなるかもしれません。

ほんのわずかなことですが、こういうことをコツコツ続けていくことが、アクセスアップにつながるんでしょうね。なお今回の記事で利用したカテゴリー情報取得コードは下の記事で説明しています。

ゆめぴょん(@yume_pyon)でした。
では、ばいちゃお! こてっZzz

タイトルとURLをコピーしました