サポート » 使い方全般 » 特定の親カテゴリーに属する子カテゴリー

  • 解決済 nakomaru

    (@nakomaru)


    いつもお世話になりありがとうございます。

    特定の親カテゴリーに属する子カテゴリーを表示をさせたいです。

    <?php
    	$categories = get_terms( 'category', array(
    	'orderby'    => 'count',
    	'hide_empty' => 0,
    	'child_of' => 7,
    ) );
    
    foreach($categories as $value):
    ?>
    <p><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></p>
    <?php endforeach; ?>

    これで親カテゴリー(ID:7)に属する子カテゴリーの一覧は取得できました。
    しかし、親カテゴリーに属しているけれども、除外したい子カテゴリーがあります。

    更に以下を表示させたいです。
    ●その子カテゴリーの説明(category_description(category);)
    ●カスタムフィールドでカテゴリーの編集画面に追加した画像
    ●その子カテゴリーに属する投稿のタイトル一覧

    御手数をおかけしますが、ご伝授頂けますと幸いです。
    よろしくお願いします。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック投稿者 nakomaru

    (@nakomaru)

    自分なりに調べて途中までできました。

    <?php
    	$categories = get_terms( 'category', array(
    	'orderby'    => 'count',
    	'hide_empty' => 0,
    	'child_of' => 7,
    	'exclude' => array(8,9,10),
    	) );
    	foreach($categories as $value):
    ?>
    <p><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></p>
    <p><?php echo $value->description; ?></p>
    <ul>
    	<?php
    		$postslist = get_posts( "category=$value->term_id & numberposts=100" );
    		foreach ( $postslist as $post ) {
    	?>
    	<li><a href=<?php echo get_permalink(); ?>><?php echo $post->post_title; ?></a></li>
    	<?php }
    	?>
    </ul>
    <?php endforeach; ?>

    これで、特定の親カテゴリーに属する子カテゴリーで、
    一部子カテゴリーを除外し、
    子カテゴリーのタイトルと説明と投稿記事の一覧を表示することができました。

    しかし、カスタムフィールドでカテゴリーの編集画面に追加した画像を表示する方法がわかりません。
    何卒宜しくお願いします。

    カスタムフィールドでカテゴリーの編集画面に追加した画像

    WordPress の標準機能ではないので、どのようにしてカテゴリーの編集画面にカスタムフィールドを追加したのかを書かなければ誰も答ることはできません。

    トピック投稿者 nakomaru

    (@nakomaru)

    pluto1234様

    詳細を書かずに質問してすみません。
    プラグイン【Advanced Custom Fields】を使用しています。

    フィールド名:MainImage
    フィールドタイプ:画像
    返り値:画像URL

    位置ルールで「分類(追加/編集)でカテゴリー」のみに設定し、
    カテゴリーの編集画面にカスタムフィールドを追加しています。

    ちなみに、上記の条件(特定の親カテゴリーに属する子カテゴリー)でなければこれで表示することができました。

    <?php
    	$cat_id = get_queried_object()->cat_ID;
    	$post_id = 'category_'.$cat_id;
    ?>
    <img src="<?php the_field( 'MainImage',$post_id); ?>" alt="" />

    しかし、どうしても上記の条件で表示させたいです。
    宜しくお願いします。

    どのテンプレートに記述しているのかがわかりません。
    上のコード:front-page.php / page.php / category.php / single.php ?
    下のコード:category.php / archive,php ?
    テンプレートによって、

    $cat_id = get_queried_object()->cat_ID;

    でカテゴリーIDが取れたり取れなかったりするんでは?

    トピック投稿者 nakomaru

    (@nakomaru)

    どちらもcategory.phpに記述しています。
    しかし、上のコードは条件分岐で<?php if (is_category(7)): ?>の中に、
    下のコードは<?php else: ?>に記入しています。

    理解不足な為、上のコード内でのカテゴリーID取得する方法がわからないです。
    すみません。宜しくお願いします。

    何か日本語は伝わりずらいので、PHP語で全部書いてください。

    追:
    もしかして、else 側に書いているのが悪い(else は不要)?

    <?php if (is_category(7)): ?>
            :
    <?php endif; ?>
    <?php
    $cat_id = get_queried_object()->cat_ID;
    $post_id = 'category_'.$cat_id;
    ?>
    <img src="<?php the_field( 'MainImage',$post_id); ?>" alt="" />

    トピック投稿者 nakomaru

    (@nakomaru)

    わかりづらくてすみません。
    めちゃくちゃで分かりづらいかもしれませんが、宜しくお願いします。

    【category.php】に記述してあります。

    <!-- ▼カテゴリ【ID=7】▼ -->
    <?php if (is_category(7)): ?>
    
    <div class="content">
    <?php
    	$categories = get_terms( 'category', array(
    	'orderby'    => 'count',
    	'hide_empty' => 0,
    	'child_of' => 7,
    	'exclude' => array(8,9,10),
    	) );
    	foreach($categories as $value):
    ?>
    <p><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></p><p><?php echo $value->description; ?></p>
    <ul>
    	<?php
    		$postslist = get_posts( "category=$value->term_id & numberposts=100" );
    		foreach ( $postslist as $post ) {
    	?>
        <li><a href=<?php echo get_permalink(); ?>><?php echo $post->post_title; ?></a></li>
    	<?php }
    	?>
    </ul>
    <?php endforeach; ?>
    </div>
    <!-- ▲カテゴリ【ID=7】ここまで▲ -->
    
    <!-- ▼【ID=7以外】カテゴリ一▼ -->
    <?php else: ?>   
    
    <div class="content">
    <?php
    	$cat_id = get_queried_object()->cat_ID;
    	$post_id = 'category_'.$cat_id;
    ?>
    <?php single_cat_title(); ?>
    
    <img src="<?php the_field( 'MainImage',$post_id); ?>" alt="" />
    <?php echo category_description(); ?>
    </div>
    
    <?php endif; ?>
    <!-- ▲【ID=7以外】カテゴリ一ここまで▲ -->

    カテゴリーアーカイブで表示したいのが

    ----------------------------------------------------------------
    cat_ID=7 の子供(8,9,10以外)のカテゴリー
     カテゴリーの付いたポスト一覧
    ----------------------------------------------------------------
    カテゴリータイトル
    カテゴリーの写真
    カテゴリーの説明
    ----------------------------------------------------------------

    ということとすると、

    <!-- ▼カテゴリ【ID=7】▼ -->
    <?php if (is_category(7)): ?>
    
    <div class="content">
    <?php
    	$categories = get_terms( 'category', array(
    	'orderby'    => 'count',
    	'hide_empty' => 0,
    	'child_of' => 7,
    	'exclude' => array(8,9,10),
    	) );
    	foreach($categories as $value):
    ?>
    <p><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></p><p><?php echo $value->description; ?></p>
    <ul>
    	<?php
    		$postslist = get_posts( "category=$value->term_id & numberposts=100" );
    		foreach ( $postslist as $post ) {
    	?>
        <li><a href=<?php echo get_permalink(); ?>><?php echo $post->post_title; ?></a></li>
    	<?php }
    	?>
    </ul>
    <?php endforeach; ?>
    </div>
    
    <?php endif; ?>
    <!-- ▲カテゴリ【ID=7】ここまで▲ -->
    
    <div class="content">
    <?php
    	$cat_id = get_queried_object()->cat_ID;
    	$post_id = 'category_'.$cat_id;
    ?>
    <?php single_cat_title(); ?>
    
    <img src="<?php the_field( 'MainImage',$post_id); ?>" alt="" />
    <?php echo category_description(); ?>
    </div>

    あっと、<div class=”content”> が2つでますね。修正!

    <!-- ▼カテゴリ【ID=7】▼ -->
    <div class="content">
    <?php if (is_category(7)): ?>
    
    <?php
    	$categories = get_terms( 'category', array(
    	'orderby'    => 'count',
    	'hide_empty' => 0,
    	'child_of' => 7,
    	'exclude' => array(8,9,10),
    	) );
    	foreach($categories as $value):
    ?>
    <p><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></p><p><?php echo $value->description; ?></p>
    <ul>
    	<?php
    		$postslist = get_posts( "category=$value->term_id & numberposts=100" );
    		foreach ( $postslist as $post ) {
    	?>
        <li><a href=<?php echo get_permalink(); ?>><?php echo $post->post_title; ?></a></li>
    	<?php }
    	?>
    </ul>
    <?php endforeach; ?>
    
    <?php endif; ?>
    <!-- ▲カテゴリ【ID=7】ここまで▲ -->
    
    <?php
    	$cat_id = get_queried_object()->cat_ID;
    	$post_id = 'category_'.$cat_id;
    ?>
    <?php single_cat_title(); ?>
    
    <img src="<?php the_field( 'MainImage',$post_id); ?>" alt="" />
    <?php echo category_description(); ?>
    </div>

    トピック投稿者 nakomaru

    (@nakomaru)

    すみません!!
    私のご質問がわかりづらかったと思います。

    カテゴリIDが7の時に、カテゴリー7に属する子カテゴリーの
    【タイトル】【写真】【説明】
    カテゴリIDが7以外の時には、表示しているカテゴリーの
    【タイトル】【写真】【説明】をさせたいのです。

    私が書いたソースだと、
    カテゴリIDが7の時に、カテゴリー7に属する子カテゴリーの
    【タイトル】【説明】
    カテゴリIDが7以外の時には、表示しているカテゴリーの
    【タイトル】【写真】【説明】
    が表示されているものになります。

    なので、カテゴリIDが7の時に、カテゴリー7に属する子カテゴリーの【写真】を
    表示する方法が知りたいんです。

    <?php if (is_category(7)): ?>
    カテゴリー7に属する子カテゴリーの【タイトル】【写真】【説明】【投稿一覧】
    <?php endif; ?>

    いままでの話はきれいさっぱり忘れて、

    <?php
    $categories = get_terms( 'category', array(
        'orderby'    => 'count',
        'hide_empty' => 0,
        'child_of' => 7,
        'exclude' => array(8,9,10),
        )
    );
    foreach($categories as $value):
    ?>
        <p><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></p>
        <?php
        $cat_id = $value->term_id;
        $post_id = 'category_'.$cat_id;
        ?>
        <p><img src="<?php the_field( 'MainImage',$post_id); ?>" alt="" /></p>
        <p><?php echo $value->description; ?></p>
        <ul>
    	<?php
    	$postslist = get_posts( "category=$value->term_id & numberposts=100" );
    	foreach ( $postslist as $post ) {
    	?>
                <li><a href=<?php echo get_permalink(); ?>><?php echo $post->post_title; ?></a></li>
    	<?php } ?>
        </ul>
    <?php endforeach; ?>
    $cat_id = get_queried_object()->cat_ID;

    ではなく

    $cat_id = $value->term_id;

    追:
    ダメだったときのコードも残っていると3秒くらいでわかったのだが・・。

    トピック投稿者 nakomaru

    (@nakomaru)

    できました!!!!!!
    ありがとうございます!!!!

    色々質問の仕方等ご迷惑をおかけしました。m(__)m
    ご丁寧にソースをあげていただき本当に助かりました。
    ありがとうございました!!

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「特定の親カテゴリーに属する子カテゴリー」には新たに返信することはできません。