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

このWEBサイト「やっぱ垂水やん」を例に解説しています。
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. お世話になったサイト

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. お世話になったサイト

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