トピック投稿者
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では試しません)