サポート » テーマ » サイドバーに表示する子カテゴリに投稿日時を表示したい

  • WordPressをご支援されている皆様。
    お世話になっております。

    現在、WordPressの最新バージョンに入っているTwenty Tenというテンプレートを元にカスタマイズしています。

    トップページのサイドバーに、ページの一覧を表示させているのですが、各ページに子カテゴリが存在しており、その子カテゴリも親カテゴリを同様にサイドバーに表示させるようにしております。

    <?php
    $cat_id = get_query_var(‘cat’);
    $children = wp_list_pages(‘exclude=11,29,13,16,32,2,8,26&title_li=&child_of=’.$cat_id.’&echo=0′);
    if ($children != ”

    • カテゴリーなし
    • “) { ?>

      <?php echo $children; ?>

    <?php } ?>

    というように記述しております。

    子カテゴリの部分だけに、投稿日時を表示させたいと思いまして、
    http://ja.forums.wordpress.org/topic/599
    の記事を参考に、

    <?php
    $cat_id = get_query_var(‘cat’);
    $children = wp_list_pages(‘exclude=11,29,13,16,32,2,8,26&title_li=&child_of=’.$cat_id.’&echo=0′);
    $date = mysql2date( ‘Y-m-d’, $child->post_date );
    if ($children != ”

    • カテゴリーなし
    • “) { ?>

      <?php echo $children; ?>

    <?php } ?>

    とし、「$date = mysql2date( ‘Y-m-d’, $child->post_date );
    」を追記しましたが、サイドバーに子カテゴリの投稿日時を表示させることができませんでした。

    【現在】
    ニュース(親カテゴリ)
    └ニュースの子カテゴリA
    └ニュースの子カテゴリB
    └ニュースの子カテゴリC
    インフォメーション(親カテゴリ)
    └インフォメーションの子カテゴリA
    └インフォメーションの子カテゴリB

    となっているところを

    ニュース(親カテゴリ)
    └ニュースの子カテゴリA 2010/10/21
    └ニュースの子カテゴリB 2010/10/22
    └ニュースの子カテゴリC 2010/10/23
    インフォメーション(親カテゴリ)
    └インフォメーションの子カテゴリA 2010/10/24
    └インフォメーションの子カテゴリB 2010/10/25

    のようにしたいと考えております。

    Googleなどで検索しても、子カテゴリのみの投稿日時を表示させる方法が見つからなかったため、こちらのフォーラムに質問させて頂きました。

    WordPressにお詳しい皆様。
    なにか解決策がございましたら、ご伝授頂けますと幸いでございます。
    よろしくお願い申し上げます。

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

    (@bcures)

    上記のコードの記述部分がうまく表示されておりませんでしたので、修正致します。
    現在、下記のように、コードを記述しております。

    <?php
    $cat_id = get_query_var('cat');
    $children = wp_list_pages('exclude=11,29,13,16,32,2,8,26&title_li=&child_of='.$cat_id.'&echo=0');
    $date = mysql2date( 'Y-m-d', $child->post_date );
    if ($children != "<li>カテゴリーなし</li>") { ?>
    <ul>
      <?php echo $children; ?>
    </ul>
    <?php } ?>

    いくつか:

    $child->post_date の、$child はどこで宣言されているのでしょうか?

    $date に結果を入れていますが、どこで表示を行いたいのでしょうか?(表示している部分がない?)

    トピック投稿者 bc

    (@bcures)

    V.J.Catkickさん、ご回答頂きましてありがとうございます。

    上記に記載した参考にしているURLが誤っておりました。
    http://ja.forums.wordpress.org/topic/599
    ではなく、
    http://ja.forums.wordpress.org/topic/4607?replies=9
    でございます。

    「$date = mysql2date( ‘Y-m-d’, $child->post_date );」の部分は、この参考URLを元に追記したものでございます。

    念の為、参考URLを元に、

    <?php echo $children; ?>

    を削除し、

    <?php
    		// カスタムフィールドの値毎に分類されたページの配列をループ
    			foreach ( $classified_children as $child ) {
    				$link = get_page_link( $child->ID );
    				$title = apply_filters( 'the_title', $child->post_title );
    ?>
    			<li><a href="<?php echo esc_url( $link ); ?>"><?php echo $title; ?></a></li>
    <?php
    
    			}
    ?>

    と修正致しましたが、やはり投稿日時は表示されませんでした。
    他の方法もふまえて、再度、調べ直してみます。

    トピック投稿者 bc

    (@bcures)

    たびたび、失礼いたします。

    上記のコードを

    <?php
    $cat_id = get_query_var('cat');
    $children = wp_list_pages('exclude=11,29,13,16,32,2,8,26&title_li=&sort_column=post_date&show_date=created&sort_order=desc&child_of='.$cat_id.'&echo=0');
    if ($children != "<li>カテゴリーなし</li>") { ?>
    <ul>
      <?php echo $children; ?>
    
    </ul>
    <?php } ?>

    とすることで、ページの投稿日時を表示させることができました。

    ただ、この方法ですと、親カテゴリの部分にも日付が表示されてしまいますので、子カテゴリの部分のみ投稿日時を表示させる方法を模索しております。

    トピック投稿者 bc

    (@bcures)

    上記に引き続き、カスタマイズを行っておりますが、

    <?php
    $output = wp_list_pages('exclude=11,29,13,16,32,2,8,26,68&echo=0&depth=2&title_li=&show_date=created');
    if (is_page( )) {
      $page = $post->ID;
      if ($post->post_parent) {
        $page = $post->post_parent;
      }
      $children=wp_list_pages( 'echo=0&child_of=' . $page . '&title_li=&sort_column=post_date&show_date=created&sort_order=desc' );
      if ($children) {
        $output = wp_list_pages ('echo=0&child_of=' . $page . '&title_li=');
      }
    }
    echo $output;
    ?>

    とすると、サブカテゴリを含むページ全部に対して投稿日が表示されてしまいます。

    <?php
    $output = wp_list_pages('exclude=11,29,13,16,32,2,8,26,68&echo=0&depth=2&title_li=');
    if (is_page( )) {
      $page = $post->ID;
      if ($post->post_parent) {
        $page = $post->post_parent;
      }
      $children=wp_list_pages( 'echo=0&child_of=' . $page . '&title_li=&sort_column=post_date&show_date=created&sort_order=desc' );
      if ($children) {
        $output = wp_list_pages ('echo=0&child_of=' . $page . '&title_li=');
      }
    }
    echo $output;
    ?>

    とすると、親カテゴリも、サブカテゴリも、投稿日が表示されなくなってしまいます。
    どうにかして、サブカテゴリのみ投稿日を表示されたいのですが、なにか良い方法はございませんでしょうか。

    参考サイトはWordPress本家のCodex「テンプレートタグ/wp list pages」です。

    どなたか、お解りの方が見えましたら、ご伝授頂けますでしょうか。
    よろしくお願いいたします。

    wp_list_categories や get_categories で親カテゴリのみのリストを作る
    つぎに、そのリストをループさせてwp_list_categoriesなどのchild_ofパラメータなどを使い、更新日付で子カテゴリを順次取得していく。

    などが一つの手順かと思われます。
    もっとすっきりした方法は他の方のアドバイス待ちで。

    トップページのサイドバーに、ページの一覧を表示させているのですが、各ページに子カテゴリが存在しており、その子カテゴリも親カテゴリを同様にサイドバーに表示させるようにしております。

    ページの子カテゴリ???
    ページ(Page)にカテゴリは、少なくともディフォルトでは存在しませんよ。

    トピック投稿者 bc

    (@bcures)

    kvexさん、適切なアドバイスをどうもありがとうございます!
    いろいろな方法も取り入れて、kvexさんの仰られる通りの方法でも、どんどん試してみます。

    toruさん、表現の仕方が悪かったようですみません。
    正しくは、子カテゴリではなく、子ページですね。

    ということは:
    Page AAA
    └このPageの子Page 2010/10/21
    └このPageの子Page 2010/10/22
    Page BBB
    └このPageの子Page 2010/10/21
    └このPageの子Page 2010/10/22

    といった具合ですね。

    WP_Queryを使って、これを表示する専用のループでできるかも。WPループの中であればthe_time()もthe_date()も使えるので。
    関数リファレンス/WP Queryの一番下のコードと、注のリンク先テンプレートタグ/query postsが参考になるかと。
    (僕は最新のpostを日付つきで表示するのにこの方法用いたことがありますpageでは試しません)

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「サイドバーに表示する子カテゴリに投稿日時を表示したい」には新たに返信することはできません。