• 初めて質問させていただきます。
    質問自体に不備が多いと思いますが、どうぞよろしくお願いします。

    実現したいことは以下のことです。

    カテゴリA の記事リストを作成したいです。

    カテゴリA
      記事1 子カテゴリX
      記事2 子カテゴリY
      記事3 子カテゴリX
      記事4 子カテゴリZ
      記事5 子カテゴリX

    などのようにその記事に子カテゴリを表示したいです。
    記事1の場合、カテゴリには、カテゴリA にチェック、子カテゴリX にチェックを
    いれています。

    下記のサイトを拝見して、実現できたのですが、
    画像は必要なく、テキストだけで表示するだけなのですが、
    どこを削ればよいかわかりません。
    PHPもあまりわかりません。下記のものをそのまま使って
    みまして実現できた次第です。
    もし、よろしければ、解読の説明をしていただくことなどは
    可能でしょうか?

    http://ja.forums.wordpress.org/topic/3204?replies=9

    function my_categories(){
    $cats = get_the_category();
    foreach((array)$cats as $cat)
    if($cat->category_parent != 0)
    echo ‘<img class=”cat-‘ . $cat->cat_ID
    . ‘” src=”‘ . get_bloginfo(‘template_url’)
    . ‘/images/’ . $cat->category_nicename
    . ‘.jpg” alt=”‘ . $cat->cat_name . ‘” />’;
    }

    記事一覧ページのループ内で
    <?php my_categories() ?>
    とすれば OK です。画像のパスは適宜変更してください。

    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 子カテゴリーに限定して出力しているわけではありませんが、こんな感じで事足りるかと思います

    <?php
    global $post;
    $cat_slug = 'cat-a'; // カテゴリAのスラッグを指定してください
    $args = array(
    	'post_per_page' => 0, // 全件表示
    	'category_name' => $cat_slug
    );
    $the_posts = get_posts( $args );
    foreach ( $the_posts as $post ) {
    	setup_postdata ($post);
    	?>
    	<h1><?php the_title(); ?></h1>
    	<?php
    	// 投稿のカテゴリーを取得
    	$cats = get_the_category();
    	if (is_array($cats) && count($cats) > 0 ) {
    		foreach ($cats as $cat) {
    			// カテゴリーAと同じカテゴリーは除外
    			if ($cat->slug != $cat_slug) {
    				echo $cat->name;
    			}
    		}
    	}
    }
    wp_reset_postdata();

    リンク先のコードは if($cat->category_parent != 0) で親カテゴリーを持たないものは除外していますね。まあどちらでも良いかと思います

    トピック投稿者 mint-chan

    (@mint-chan)

    お返事くださっていたのに、お返事が遅くなってしまってすいませんでした。
    都合により、スローペースでの制作となってしまっています。
    まだ試していませんが、さっそくやってみます。

    ありがとうございました。

    トピック投稿者 mint-chan

    (@mint-chan)

    先日は、ありがとうございました。
    時間がかかりましたが、やってみました。
    まず、ご回答いただきました内容を理解するのがとても難しい状況でした。
    似たようなものを探し、下記のもので特定カテゴリの記事リストは表示できました。

    //自分で考えたもの

    <?php
    $posts = get_posts(‘numberposts=0&category=2’);
    global $post;
    ?>
    <?php
    if($posts): foreach($posts as $post): setup_postdata($post); ?>
    <h1><?php the_title(); ?></h1>
    <?php endforeach; endif;
    ?>

    しかし、教えていただいたものでやってみますと、うまくいきません。
    <?php
    global $post;
    $cat_slug = ‘cat-a’; // カテゴリAのスラッグを指定してください
    $args = array(
    ‘post_per_page’ => 0, // 全件表示
    ‘category_name’ => $cat_slug
    );
    $the_posts = get_posts( $args );
    foreach ( $the_posts as $post ) {
    setup_postdata ($post);
    ?>
    <h1><?php the_title(); ?></h1>
    <?php endforeach; ?>

    としました。

    何かおかしいでしょうか?スラッグ名のところには、正しい名前をいれました。
    自分で記述したものと何が違うのでしょうか?
    教えていただいたものに、<?php endforeach; ?> というものがなかったので、同じ形式にするためにつけてみました。

    これは、スラッグではなくIDではいけないのでしょうか?

    もうひとつ
    <?php
    <!– 投稿のカテゴリーを取得 –>
    $cats = get_the_category();
    if (is_array($cats) && count($cats) > 0 ) {
    foreach ($cats as $cat) {
    <!– カテゴリーAと同じカテゴリーは除外 –>
    if ($cat->slug != $cat_slug) {
    echo $cat->name;
    }
    }
    }
    の部分は、子カテゴリを表示する部分だと思いますが、自分で書いた方に追加するとしたら、どこにどのように記述すればよいでしょうか?

    また、<?php endforeach; ?> は必要ないのでしょうか?
    また、
    <?php
    <!– 投稿のカテゴリーを取得 –>
    の<?php を閉じるための ; ?> は必要ないのでしょうか?

    できれば、教えていただいたもので実現したいと考えています。
    どうぞよろしくお願いします。

    トピック投稿者 mint-chan

    (@mint-chan)

    一番最初の質問についてですが、解決しました。
    ソースをじっとみてみましたら、echoのあとに画像の記述をはずし $cat->name; にしてみましたら、テキストだけが表示されました。

    function my_categories(){
    $cats = get_the_category();
    foreach((array)$cats as $cat)
    if($cat->category_parent != 0)
    echo $cat->name;

    }

    としました。よかったでしょうか?

    また先ほどのご返信に対しても実現してみたいので、何がいけなかったのか、教えていただけましたらもう一度、検討したいと思います。
    よろしくお願いします。

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