質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

7720閲覧

【WP】子・孫は非表示、親カテゴリの記事のみ表示するには

inoma

総合スコア21

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/08/26 10:02

編集2017/08/26 10:04

###前提・実現したいこと
バージョン:wordpress 4.8.1
カスタム投稿で使用しているカテゴリーで、親のカテゴリーページへいくと子や孫の記事も一覧で表示されてしまいます。
これを親のみ表示させたいです。

例えば

全国(親)
ー東北(子)
ー関東(子)
ーー東京(孫)
...

というカテゴリーを作ったとして、親である全国のページへいくと、東北や関東、東京の記事も出てきてしまいます。
これを全国だけチェックしている、つまり親カテゴリの記事だけ表示したいです。

カスタム投稿(sample)として、taxonomy-sample_cat.php内でやっています。
いろいろと検索して試してみましたがどうしてもうまくいかなくて、質問しました。

PHPやWPはまだ不慣れな部分もあるのですが、どうかご教授お願いいたします。

###該当のソースコード
taxonomy-sample_cat.php

<?php if(have_posts()): while(have_posts()): the_post(); ?> <h1><?php the_title(); ?></h1> <?php endwhile; ?> <?php endif; ?>

###試したこと
以下2つのコードを検索で見つけて試してみましたが、ダメでした。
どちらもthe_post();より前に記述するようとのことでした。

<?php if (is_category()) { $current_cat = get_query_var('cat'); if ($children = get_categories('child_of='.$current_cat)) { $exclude = array(); foreach ($children as $child) $exclude[] = $child-&gt;term_id; query_posts(array('cat' =&gt; $current_cat, 'category__not_in' =&gt; $exclude)); } } ?>
<?php $cats = get_the_category(); $parent_id = 2;//IDを入れる $exclude = array($parent_id); $term_children = get_terms( 'category', array('child_of' => $parent_id) ); if($term_children){ foreach($term_children as $child){ $exclude[] = $child->term_id; } }; foreach((array)$cats as $cat){ if(!in_array($cat->cat_ID, $exclude)){ echo '<li><a href="' . get_category_link($cat->cat_ID) . '">' . $cat->cat_name . '</a></li>'; } } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

カスタム投稿のスラッグがsampleで、タクソノミーのスラッグがsample_catとして、
以下をfunctions.phpに加えてみてください。

php

1function query_at_sample( $query ) { 2 if( is_admin() || ! $query->is_main_query() ) 3 return; 4 if( $query->is_tax( 'sample_cat' ) ) { 5 global $post; 6 $terms = get_queried_object()->slug; 7 $query -> set( 'post_type', 'sample' ); 8 $query -> set( 'tax_query', 9 array( array( 10 'taxonomy' => 'sample_cat', 11 'field' => 'slug', 12 'terms' => $terms, 13 'include_children' => false 14 )) 15 ); } 16} 17add_action( 'pre_get_posts', 'query_at_sample' ); 18

参考まで。

投稿2017/08/26 23:56

8-0_nyan5

総合スコア2352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inoma

2017/08/27 04:22

8-0_nyan5様 ありがとうございます!こちらのコードで無事に解決いたしました。 わざわざ回答してくださり、本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問