OK、これが私の設定です。
「issue」と呼ばれるカスタム投稿タイプ(雑誌の場合)対応するissueの投稿IDと一致するカスタムメタフィールドを持つ投稿。
単一の「issue」投稿ページにいるときは、すべての関連投稿をクエリし、それらを関連カテゴリ別にグループ化して表示します。ポストクエリが機能しているのですが、カテゴリのグループ分けに頭を動かすことができないようです。
これが私の質問です
<?php
global $post;
// List posts by the terms for a custom taxonomy of any post type
$current = get_the_ID($post->ID);
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'meta_key' => '_rkv_issue_select',
'meta_value' => $current
);
$issue_cats = new WP_Query($args);
if( $issue_cats->have_posts() ) :
?>
<ul>
<?php while ( $issue_cats->have_posts() ) : $issue_cats->the_post(); ?>
<li><?php the_title(); ?></li>
<?php endwhile; // end of loop ?>
<?php else : ?>
<?php endif; // if have_posts() ?>
</ul>
<?php wp_reset_query(); ?>
WP_QueryをSQLコマンドで変更してそれらをグループ化することを検討することもできますが、これは私の現在のMySQLを少し超えていますが、私は常にこの http:// codexを使用して分類自体についてforeachを実行します。 wordpress.org/Function_Reference/get_categories
ここにいくつかのサンプルコードがあります:
<?php
global $post;
$current = get_the_ID($post->ID);
$cargs = array(
'child_of' => 0,
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'taxonomy' => 'category', //change this to any taxonomy
);
foreach (get_categories($cargs) as $tax) :
// List posts by the terms for a custom taxonomy of any post type
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'meta_key' => '_rkv_issue_select',
'meta_value' => $current,
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $tax->slug
)
)
);
if (get_posts($args)) :
?>
<h2><?php echo $tax->name; ?></h2>
<ul>
<?php foreach(get_posts($args) as $p) : ?>
<li><a href="<?php echo get_permalink($p); ?>"><?php echo $p->post_title; ?></a></li>
<?php endforeach; ?>
</ul>
<?php
endif;
endforeach;
?>
これはすべてのカテゴリで投稿を表示し(hide_emptyがtrueに設定されている)、それに対してget_postsを実行します(そして何も出力する前に投稿があることも確認します)。
あなたがグループ化を分けるためにあなたがヘッダーに何を望んでいたかわからなかったので、私はh2を使って、同様にリストへのリンクを加えました。
これはget_postsに変更しました。グローバル$ post変数をオーバーライドしないため、より効率的であることがわかったためです(データベース呼び出しが少なく、wp_reset_query()の使用が少ない)。