【WordPress】トップページで特定のカテゴリーのみ表示・非表示する方法【Cocoon】

【WordPress】トップページで特定のカテゴリーのみ表示・非表示する方法【Cocoon】
スポンサーリンク
2022.07.04

このWEBサイトは「WordPress」で作っており、無料テーマの「Cocoon」を使っています。

Cocoon
SEO・高速化・モバイルファースト最適化済みのシンプルな無料Wordpressテーマ。100%GPLテーマです。

このWEBサイト「やっぱ垂水やん」を例に解説しています。

準備編でも書きましたが、記載している「●.php」のファイルは必ず「cocoon-child-master/tmp/」にコピーして編集してください。
スポンサーリンク

1. カテゴリーのIDとスラッグを調べておく

特定のカテゴリーを表示・非表示するも、IDかスラッグが分からなければ何も出来ません。
ダッシュボードの「投稿→カテゴリー」ページで、作成したカテゴリー一覧があり一目で分かります。
※IDは自動で付きますが、スラッグは自分で付ける必要があります。

表示されていない場合は、右上にある「表示オプション▼」を開いてチェックが入っているか確認してみてください。

2. 特定のカテゴリーのみをトップページに表示する方法

場所としては「新着スポットブログ一覧」と「新着個人ブログ一覧」の所です。

2-1. トップページの一番上に表示させる

トップページは「list.php」を編集します。
ファイルの場所は「cocoon-child-master/tmp/list.php」です。

ファイルを開くと以下のようなコードになっています。

<?php //一覧
/**
* Cocoon WordPress Theme
* @author: yhira
* @link: https://wp-cocoon.com/
* @license: http://www.gnu.org/licenses/gpl-2.0.html GPL v2 or later
*/
if ( !defined( 'ABSPATH' ) ) exit;

////////////////////////////
//アーカイブのタイトル
////////////////////////////
if ( is_category() && !is_paged() ){

~~~~~ 省略 ~~~~~

////////////////////////////
//メインカラム追従領域
////////////////////////////
get_template_part('tmp/main-scroll'); ?>

13行目からの「アーカイブのタイトル」のif文の閉じタグ以降に追加します。(行番号はバージョンにより変更になる可能性があります)

////////////////////////////
//アーカイブのタイトル
////////////////////////////
if ( is_category() && !is_paged() ){
  ////////////////////////////
  //カテゴリページのパンくずリスト
  ////////////////////////////
  if (is_single_breadcrumbs_position_main_top()){
    get_template_part('tmp/breadcrumbs');
  }

  ////////////////////////////
  //カテゴリページのコンテンツ
  ////////////////////////////
  get_template_part('tmp/category-content');
} elseif ( (is_tag() || is_tax()) && !is_paged() ) {
  get_template_part('tmp/tag-content');
} elseif (!is_home()) {
  //それ以外
  get_template_part('tmp/list-title');
}

<?php ///// ここから追加 ///// ?>
<?php if(is_home() && !is_paged()): ?>
<?php
$arg = array (
  'posts_per_page' => 5, //表示する数
  'category_name' => 'spot_blog', //カテゴリースラッグ
  'category' => 103, //カテゴリーID
  'orderby' => 'date', //データのソート(日付)
  'order' => 'DESC' //ソート順(上から日付の新しい順)
);
$posts = get_posts( $arg );
if( $posts ): ?>
  <h3>新着スポットブログ</h3>
  <ul>
  <?php
  foreach( $posts as $post ):
    setup_postdata( $post );
  ?>
    <li><a href="<?php echo get_permalink($post->ID); ?>">
      <?php echo get_the_post_thumbnail($post->ID, 'thumbnail'); ?>
      <span><?php echo mysql2date('Y.m.j', $post->post_date); ?></span>
      <h2><?php echo $post->post_title; ?></h2>
    </a></li>
  <?php
  endforeach;
endif;
wp_reset_postdata();
?>
</ul>
<?php endif; ?>
<?php ///// ここまで追加 ///// ?>

上記コードで「posts_per_page」は表示する数です。
「category_name」と「category」はどちらかだけで大丈夫ですが、ローカルとサーバーではIDが変わる可能性があるので、個人的にはスラッグをお勧めします。

上記コードではリストタグで表示していますが、この辺は好きに変更しても大丈夫です。
CSSのクラスは全て消していますので、お好きに追加してください。

また、トップページの1ページ目だけ表示していますので、2ページ目以降も表示させたい場合は、24行目の「<?php if(is_home() && !is_paged()): ?>」の「」を削除すればOKです。

2-2. トップページの一番下に表示させる

追加コードとしては上記コードと同じで、「category_name」か「category」を変更すればどんなカテゴリーでも表示させる事が出来ます。
トップページの一番下に表示させたい場合は、以下の場所にコードを追加します。

////////////////////////////
//メインカラム追従領域
////////////////////////////
get_template_part('tmp/main-scroll'); ?>

<?php ///// ここに追加 ///// ?>

一番下に表示させたいだけあり、「list.php」の一番下にコードを追加すればOKです。

2-3. お世話になったサイト

WordPress トップページのみに条件分岐する場合のやり方
WordPressのトップページのみに何かのコンテンツを表示したい場合には、WordPressで用意されてる条件分岐タグを使用することでトップページ判定をすることができます。 Wo
【WordPress】特定カテゴリーで絞り込んだ記事の一覧を表示させる方法
TOPページや記事下などなど…任意の場所に「あるカテゴリーの記事を何件か自動で表示したい」時があるかと思います。 ブログであればイチオシの記事一覧、会社やお店の

3. 特定のカテゴリーをトップページに表示させない方法

場所としては「新着スポット一覧」の所です。
2で表示したカテゴリー以外を表示させる方法です。

3-1. Cocoonの設定

Cocoonの設定で特定のカテゴリーを一覧に表示させない項目はあるのですが、このチェックを付けてしまうと「カテゴリーページ」や「タグページ」等全てが非表示となってしまう為使えませんでした。

3-2. functions.phpに追加コードを入力

「tmp」フォルダの中のPHPファイルのどこを触っても出来なかった為、結果的に「functions.php」にコードを書くしかありませんでした。

ファイルの場所は「cocoon-child-master/functions.php」で、最初から子テーマの中に入っています。
functions.phpに以下のコードを追加します。

//特定のカテゴリの除外
function exclude_category( $query ) {
  if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'cat', '-103, -104' ); //マイナスをつけてカテゴリIDを除外する
  }
}
add_action( 'pre_get_posts', 'exclude_category' );

4行目の所にカテゴリーIDを「-(マイナス)」を付けて入力します。
上記コードでは2つのIDを除外していますが、「,(カンマ)」で区切ればいくらでも追加出来ます。

3-3. お世話になったサイト

WordPressトップの一覧リストの中から特定のカテゴリを除外するカスタマイズ方法
サブメニューのフォーラムに「トップページの新着記事一覧から特定のカテゴリーを除外して表示する方法」についての質…
スポンサーリンク

4. さいごに

今や検索すれば大抵の事が見つかりますが、探しきるまでが大変です。
全て自分でコードを書く為には勉強が必要ですね。

個人ブログ

ページ・ナビゲーション

コメント

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