質問編集履歴

1 タグの追加

inoma

inoma score 10

2017/08/26 19:03  投稿

【WP】子・孫は非表示、親カテゴリの記事のみ表示するには
###前提・実現したいこと
バージョン: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>';
}
} ?>
```
  • WordPress

    9966 questions

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

  • PHP

    26434 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る