web-dev-qa-db-ja.com

すべての投稿をカスタム投稿タイプでリストしますが、カスタム分類によって動的にグループ化します

"Resources"という名前のカスタム投稿タイプがあり、それに "Types"という名前の分類法があります。私は手動で各用語を引っ張っていますが、これは最も洗練された解決策ではありません。新しい用語が追加されるたびに、手動で追加する必要があります。

私は本規約が以下にリストされている関連投稿に含まれる方法を必要としています。各投稿を表示するためのカスタムループ(カスタムフィールドを取り込む)があるので、各投稿に対して何を表示するかを制御する必要があります。

これに取り組む簡単な方法はありますか?ありがとう。

1
nurain

ページテンプレート用のこのコードをお試しください。私は自分のプロジェクトの一つでそれを使った。この用語を持つすべての投稿の一覧を持つ分類用語を1つずつ出力します。 (YOUR_TAXONOMY_SLUGをあなたのものに置き換えてください。)

<div id="content">
<h2 class="entry-title"><?php the_title(); ?></h2>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    $mytaxonomy = get_terms('YOUR_TAXONOMY_SLUG', array("fields" => "names"));
    <?php for ( $myterm = 0; $myterm < count($mytaxonomy); $myterm++) { ?>
        <h3><?php echo $mytaxonomy[$myterm]; ?>:</h3>
        <ul class="taxonomy_group">
        <?php $loop = new WP_Query(array('YOUR_TAXONOMY_SLUG' => $mytaxonomy[$myterm]));
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
            <?php endwhile; ?>  
        </ul>
    <?php } ?>
    </div><!-- #post-## -->
</div><!-- #content -->
3
YoYurec

注意してください、このループはカテゴリが単一のWordである場合にのみ機能します。 WP_Queryでは、ループ内にカテゴリSLUGが必要です。カテゴリ名が2つ以上の単語で区切られていないスペースで区切られている場合は、機能しません(試したので確認できます)。与えられた分類用語からナメクジを引き出す方法はまだ見つかっていませんが、私はそれに取り組んでいます。

補遺:複数ワードの用語名の問題を回避する方法を見つけたと思います。私のコードで動作するようです。

    <div id="content">
<h2 class="entry-title"><?php the_title(); ?></h2>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php $terms = get_terms('YOUR_TAXONOMY_SLUG');
    $count = count($terms); ?>
<?php if ($count > 0) {
    foreach ( $terms as $term) { ?>
        <h3><?php echo $term->name; ?></h3>    
        <ul class="taxonomy_group">
        <?php $loop = new WP_Query(array('YOUR_TAXONOMY_SLUG' => $term->slug));
            while ( $loop->have_posts() ) : $loop->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
            <?php endwhile; ?>  
        </ul>
    <?php }
    } ?>
    </div><!-- #post-## -->
</div><!-- #content -->

これが他の誰かのために働くかどうか私に知らせてください。

1
Robert Kopacz