二歳差育児クロオ


どうやってストレスを無くすか、それが問題だ

STINGER5で、トップページの記事一覧から特定のカテゴリを除外する方法

   

 タグ : , ,
photo credit: Some rights reserved by Thomas Leuthard

STINGER5で、トップページの記事一覧から特定のカテゴリを除外する方法

WordPressとSTINGER5でブログを始めたとき、トップページには新着記事が一覧で並びますよね。

この一覧から、特定のカテゴリを除いて表示したい 場合のコードの書き方を調べてみました。

いくつかやり方はありますが、問題の起こりにくい方法を探しましたので参考にしてみてください。

スポンサーリンク

特定カテゴリをトップページの記事一覧から除外する

テーマのための関数(functions.php)に、以下のコードを書き込みます。

function exclude_category_at_home( $query ) {
	if ( is_admin() || ! $query->is_main_query() )
	return;
 
	if ( $query->is_home() ) {
		$query->set( 'cat', 'カテゴリID' );
		return;
	}
}
add_action( 'pre_get_posts', 'exclude_category_at_home' );

「カテゴリID」のところには、除外したいカテゴリIDを入れます。

注意したいのは、特定カテゴリを除外したい場合には マイナス表記が必要 なことです。

カテゴリIDが20の場合は、この部分がマイナスの数値になるよう、半角数字で -20 と記述します。

プラスの値にすると、特定カテゴリだけを一覧表示する という意味になります。

他の部分は何も考えずにコピペでOKかと思います。

非推奨:「query_posts」を使う方法

上記で紹介した方法は、実は query_posts の代替手段です。

query_posts はあまりお勧めできない機能ですが(後述)、一覧表示のループに様々な指示を出すことができます。

例えば、STINGER5のitiran.phpは以下のようになっています。

<div id="topnews">
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <dl class="clearfix">
    <dt> <a href="<?php the_permalink() ?>" >
      <?php if ( has_post_thumbnail() ): // サムネイルを持っているときの処理 ?>

(以下省略)

この1行目と2行目の間に、以下の query_posts を貼りつけるだけで、先ほど紹介した機能と同じ効果があります。

<?php query_posts('cat=-20'); ?>

 
ただ、query_posts は問題が多くて、あまり利用を推奨できない機能 なのです。

具体的な問題として、以下のようなものがあります。

  • サイドバーのループ(一覧)に影響する
  • ページ送りができなくなる

前者は、query_postsをリセットする以下のコードを挿入すれば改善できます。

<?php wp_reset_query(); ?>

 
一方、後者の問題は厄介です。

ページ送りで404が出たり、ページを進んでも同じ一覧が出たりする問題は、原因を突き止めるのにかなりの労力と馴れが必要になります。

query_postsを使わずに済む場合には、代替手段を用いた方が良いかもしれませんね。

参考: query_postsを捨てよ、pre_get_postsを使おう | notnil creation weblog

参考: WordPressのquery_postsの書き方と止める方法 | CREAMU

参考: 【WordPress】ループ処理で記事の表示件数やカテゴリーを指定する方法 | FREETOWN

サイドバーのNEW POSTからも除外する

トップページの一覧だけでなく、サイドバーに表示された一覧からも特定カテゴリの記事を除外したいときには、STINGER5の場合は newpost.php を編集します。

<div id="kanren">
  <?php
$args = array(
    'posts_per_page' => 5,
);
$st_query = new WP_Query($args);

(以下省略)

上記のように書かれたコードの3行目と4行目の間に

    'cat' => -20,

というように除外したいカテゴリIDを マイナスの数値で 記述します。

こうすると、特定カテゴリの記事は NEW POST 部分に現れなくなります。

 

まとめ

ということで、STINGER5を使っている場合の「特定カテゴリを一覧から除外する方法」を調べてみました。

このブログの場合、「雑記帳」という日記のようなカテゴリを トップページの一覧から分離しました。

ページの下の方に、別に一覧表示させています。

設定例として、一度確かめてみてくださいね!

 カテゴリ - STINGER

この記事がお役に立てたら、是非シェアをお願いします^^

  • Tweet
  • このエントリーをはてなブックマークに追加
feedlyで更新をチェックしてね!

  こんな関連記事もあったよ

0097
WordPress内の「検索結果0件」をカスタマイズ! 検索キーワードに応じて任意の記事を表示する方法

WordPressには サイト内検索 の機能があります。 多くのテーマでも、「検索窓」や「検索結果...

0096
4月21日のGoogleアルゴリズム変更に備えて「モバイルフレンドリーテスト」を実施しよう

つい先日、Googleが 「スマホ対応サイトを検索順位で優先するよ!」 と発表しました。 検索結果...

0067
STINGERの関連記事を「Similar Posts」に置き換え、本当の「関連記事」を表示する方法

今日はWordPressブログのカスタマイズのお話です。 ブログに STINGER5というテーマ ...

0076
時間短縮! 管理画面を便利にするWordPress時短プラグイン5選

WordPressにはプラグインという拡張機能があって、記事投稿や編集作業を快適にしてくれる様々な...

0093
WordPressタグクラウドの強弱を背景色で表現して「意味のあるもの」にする方法

WordPressには タグクラウド という機能が用意されています。 投稿のタグを一覧表示するだけ...

0098
その検索、履歴残ってますよ…。家族には見せられないGoogle検索履歴の消し方

この記事は1年以上前に書かれたものです。 Googleのページ名などが若干変更されていますので、適...

0080s
【検証結果】アイキャッチ画像に美人を使うとクリックされやすい? を検証してみた

先日、アイキャッチ画像に美人を使うとクリックされやすい? という 個人的な趣味の WEB集客の記事...

0084s
バズらない弱小ブログがPVを手っ取り早く増やす3つのポイント

本日は2月14日! 皆さんお待ちかねの、平将門公の命日 ですね。 バレンタインチョコ? そんなもの...


お気軽にコメントをどうぞ!

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 ※情報商材の紹介・被リンク獲得目的のコメントは承認いたしません