jim912さん、お時間を割いて下さってありがとうございます。
早速
... query_posts('showposts=1&cat='.$category->cat_ID); ...
を
... query_posts('showposts=3&cat='.$category->cat_ID); ...
へ。
... if (have_posts()) : the_post(); ?>
を
... if (have_posts()) : while (have_post()) : the_post(); ?>
へ。
<?php endif; endforeach; ?>
を
<?php end while; endif; endforeach; ?>
としてみました。
複数のポストが存在するカテゴリから3件表示されるようになりました。
やりたかったことの半分はこれで達成出来そうです。
<?php dp_list_pages; ?>
についてですが
<?php wp_list_pages; ?>
では
<ul><li><a>(固定ページ)</a></li><li><a>(固定ページ)</a></li> ... </ul>
とマークアップされた固定ページへのリンクリストが生成されるのに対して、
<ul> ... </ul>
セレクタを除いた固定ページへのリンクリストが生成されました。
functions.php
内に
# Displays a list of pages
function dp_list_pages() {
global $wpdb;
$querystr = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' ORDER BY $wpdb->posts.post_title ASC";
$pageposts = $wpdb->get_results($querystr, OBJECT);
if ($pageposts) {
foreach ($pageposts as $post) {
?><li><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a></li><?php
}
}
}
という箇所があったので、jim912さんが予見された“独自関数”に当たるのではないかと思います。
functions.php
内の同じ並びに
# Displays a list of categories
function dp_list_categories($num=0, $exclude='') {
if (strlen($exclude)>0) $exclude = '&exclude=' . $exclude;
$categories = get_categories('hide_empty=1'.$exclude);
$first = true; $count = 0;
foreach ($categories as $category) {
if ($num>0) { $count++; if ($count>$num) break; } // limit
if ($category->parent<1) {
if ($first) { $first = false; $f = ' class="f"'; } else { $f = ''; }
?><li<?php echo $f; ?>>
<a href="<?php echo get_category_link($category->cat_ID); ?>"><?php echo $category->name ?><?php echo $raquo; ?></a></li>
<?php
}
}
}
という記述もあるため、
<?php dp_list_categories; ?>
と単純にテンプレートへ追加すれば
<li><a>(カテゴリ)</a></li>
という形で全カテゴリがリスト出力されそうです。
でもdp_list_categories
は使わず
while ... endwhile
間のいずれかに
[前略]
<?php ... while (have_posts()) ... ?>
<ul>
<?php カテゴリ関連コード ?>
<li><?php ポスト関連コード ?></li>
</ul>
<?php ... endwhile; ... ?>
こんな形であらかじめ
と
- を配置してしまえば
3件分のポストデータをリスト化された状態で呼び出せるのかな?とも思えてきました。
いま現在メインインデックスのポストループ周囲は
<?php $categories = get_categories('hide_empty=1&order=DESC');
foreach ($categories as $category) :
query_posts('showposts=3&cat='.$category->cat_ID);
if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><a href="<?php echo get_category_link($category->cat_ID); ?>"><?php echo $category->name ?></a></h2>
<div class="post">
<div class="thumb"><a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a></div>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<p><?php echo dp_clean($post->post_content, 300); ?></p>
<a href="<?php the_permalink(); ?>" class="readmore">つづきを読む</a>
</div>
<?php endwhile; endif; endforeach; ?>
となっています。
【※】
これらのコードが書かれているのは、WP Theme Designerさんが配布されている“MEGANEWS”と言うマガジンスタイルのWPテーマです。
今となってはちょっと古めな2009年製WPテーマですが、各カテゴリの最新のポストからタイトル・サムネール・抜粋・パーマリンクを呼び出し、ポストが投稿された日時順でメインインデックスに並べてくれるWPテーマなので重宝しています。
※同様の機能をもっとスマートに実現している・より新しいWPテーマがもしあれば、そういったWPテーマも試してみたいとは思っているのですが…
以上を踏まえた上で、引き続き御指南・お付き合い頂ければ幸いです。