web-dev-qa-db-ja.com

カスタム分類アーカイブテンプレートの個別投稿とカスタム投稿タイプ

カスタム投稿タイプ(Match)とカスタム分類(Team)の両方を作成し、チーム分類を通常の投稿(そのチームのニュース)とMatchカスタム投稿タイプで使用できるようにしました。

しかし、私はtaxonomy-team.phpを作成したArchiveテンプレートページでは、投稿はNewsセクションとMatchセクションに分かれていません。

私はさまざまな解決策を試してみましたが、どちらも現在同じコンテンツ(チームのすべての投稿とすべての試合)を表示しています。

私はこことさまざまなチュートリアルサイトで答えを読むことから試みた2つの方法を示すために2番目のセクション "Matches"を復活させました。

<?php
/**
 * The template for displaying Archive pages.
 *
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package aThemes
 */

get_header(); ?>

    <section id="primary" class="content-area">
        <div id="content" class="site-content" role="main">

<?php
    // This sets out a variable called $term - we'll use it ALOT for what we're about to do.
     $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?>

<!-- See how we used the variable to let Wordpress know we want to display the title of the taxonomy? -->
    <div id="matchheader"><?php echo $term->name; ?></div>

<!-- Using the same variable, we can use it to display the posts that the artist has been tagged in -->
    <h2><?php echo $term->name; ?> News</h2>
    <ul class="newslist">
<?php $args = array(
    'post_type'                => 'match',
    'child_of'                 => 0,
    'parent'                   => '',
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => 1,
    'hierarchical'             => 1,
    'exclude'                  => '',
    'include'                  => '',
    'number'                   => '',
    'taxonomy'                 => 'team',
    'pad_counts'               => false 

    ); 
$categories = get_categories( $args );
foreach ( $categories as $cat ) {

$posts_array = get_posts(
    array(
        'posts_per_page' => -1,
        'post_type' => 'match',
        'tax_query' => array(
            array(
                'taxonomy' => 'team',
                'field' => 'term_id',
                'terms' => $cat->term_id,
            )
        )
    )
); }
?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> -  <?php the_time('d M Y'); ?></li>
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>
    </ul>

    <h2><?php echo $term->name; ?> Matches</h2>
    <ul class="matchlist">
    <?php while (have_posts()) : the_post(); ?>       
                <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> -  <?php the_time('d M Y'); ?></li>
    <?php endwhile; ?>
    </ul>

            </div><!-- #content -->
    </section><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>    

アーカイブページを分割して各チームのニュースと試合を別々に表示するにはどうすればよいですか。

2
Ronan

記憶から行くこれは記事のために働くべきです

<?php $query1 = new WP_Query( array( "post_type" => "post", "tag" =>
$term->slug) ); ?>

最初のクエリでは、[TEAMNAME]というタグが付けられた投稿のみが返されます(カスタム分類法が投稿のタグとして表示される場合があります)。これはチームにはうまくいくはずです

<?php $query2 = new WP_Query( array( "post_type" => "match", "team" => $term->slug) ); ?>

2番目のクエリは、[TEAMNAME]のカスタム分類法との一致のみを返します。

1
Howli