何をなさりたいかが分かりにくいので、もう少し詳しく説明して頂けますか? 例えば
- 親カテゴリーのページに子カテゴリー毎の記事一覧を表示させたい
- 親カテゴリーのページで、記事を子カテゴリー毎に分類して表示させたい
のどちらかでしょうか? それ以外のことでしょうか?
用途によって提示すべきコードも変わってきてしまいます。
mizubeさんレスありがございます。わかりにくい記載ですみませんでした。
えっと要はこのような用語集みたいなものを作りたいのです。↓これみたいな
http://www.mitsue.co.jp/case/design/f_index.html
で、親カテゴリに子カテゴリ(ア行・イ行・ウ行、、、、)を表示させてその下に用語(子カテゴリに所属している記事)の一覧を表示したいのです。
現状は親ページに子カテゴリを作って<?php wp_list_cats(‘child_of=ナンバー’); ?>
で表示させているのですが、当然子カテゴリが並ぶだけです。
その子カテゴリと子カテゴリの間に子カテゴリに所属している詳細ページのタイトル一覧だけを入れられたらと思っております。(それを繰り返す)
例:
ア行(子カテゴリ)
アイコン、ウィンドウズ、アップル
カ行(子カテゴリ)
買い物かご、拡張子
サ行(子カテゴリ)
・
・
見たいな感じです
わかりにくい文章ですが、何卒ご教授願いします。
wp_list_categories() で出力するカテゴリー毎にタイトル一覧を挿入することは出来ません。
用語集でしたら、「投稿」ではなく「ページ」で作成される方が自然な気はしますが、どうしても「投稿」で実現したいという場合は、例えば
<?php
function wp_list_glossary( $parent=1, $level=0 ) {
$param = ( $level ) ? 'include' : 'parent';
$children = get_terms( 'category', array( $param => $parent ) );
if ( empty( $children ) ) return;
echo str_repeat( "\t", $level ) . '<ul class="category">' . "\n";
foreach ( $children as $c ) {
$class = 'cat-item cat-item-' . $c->term_id;
if ( is_category() ) {
$cc = get_category( get_query_var( 'cat' ) );
if ( $c->term_id == $cc->term_id ) {
$class .= ' current-cat';
} elseif ( $c->term_id == $cc->parent ) {
$class .= ' current-cat-parent';
}
}
echo str_repeat( "\t", $level + 1 )
. '<li class="' . $class . '"><a href="' . get_category_link( $c->term_id ) . '">'
. attribute_escape( $c->name ) . '</a>';
$cargs = array(
'category__and' => array( $c->term_id ),
'showposts' => -1,
'ASC',
);
$cquery = new WP_Query( $cargs );
if ( $cquery->have_posts() ) {
echo "\n" . str_repeat( "\t", $level + 2 )
. '<ul class="glossary">' . "\n";
while ( $cquery->have_posts() ) {
$cquery->the_post();
echo str_repeat( "\t", $level + 3 )
. '<li class="word"><a href="' . get_permalink() . '">'
. apply_filters( 'the_title', get_the_title() ) . '</a></li>' . "\n";
}
echo str_repeat( "\t", $level + 2 ) . '</ul>' . "\n";
}
$grandchildren = get_terms( 'category', array( 'parent' => $c->term_id) );
if ( !empty( $grandchildren ) ) {
foreach ( $grandchildren as $gc ) {
wp_list_glossary( $gc->term_id, $level + 2 );
}
}
echo str_repeat( "\t", $level + 1 ) . '</li>' . "\n";
}
echo str_repeat( "\t", $level ) . '</ul>' . "\n";
}
?>
というような関数をテーマの functions.php に追加し、
$parent = get_category_by_slug( 'glossary' ); // カテゴリースラッグからカテゴリーID を取得
wp_list_glossary( $parent->term_id );
などとテンプレートに記述すれば一応はやりたいことが出来るのではないかと思います。
ただ、上記の関数はテストが不十分なので動作は保証しかねます。
mizubeさん
有難うございます!
お礼が遅くなりすいませんでした。
なるほど、やはり大変なことになるのですね。
最初ページで作成しようとかとも思っていたのですが、
投稿で詳細ページを作成すればそれをカテゴリ登録して自然とカテゴリページにタイトルが追加されていくもんだと思って。そのような手法をとろうと思いました。
上記のやり方ですと初心者の私にはちんぷんかんぷんですので
ア行(子カテゴリ)
アイコン、ウィンドウズ、アップル
カ行(子カテゴリ)
買い物かご、拡張子
のやりかたはあきらめます。(というか他の見せ方を考えてみます。)
ご丁寧に有難うございました!!!