web-dev-qa-db-ja.com

現在のカテゴリと同じタグからの投稿を表示しますか?

現在のカテゴリと同じタグからの投稿を1ページに表示しようとしています。

現在のカテゴリの投稿を以下のように表示しています。

<div class="row">
    <?php
    global $post;
    $category = get_the_category($post->ID);
    $category = $category[0]->cat_ID;
    $myposts = get_posts(
                array(
                    'numberposts' => -1, 
                    'offset' => 0, 
                    'category__in' => array($category),
                    'post_status'=>'publish',
                    'order'=>'ASC' 
                    )
                );
    foreach($myposts as $post) :
        setup_postdata($post);  ?>
        <div class="col-md-3 animation-element bounce-up cf" <?php post_class(); ?> id="post-<?php the_ID(); ?>">
            <a class="test" href="<?php the_permalink(); ?>">
            <?php echo get_the_post_thumbnail( $post->ID, 'large' ); ?> </a>
                <p style="text-transform:uppercase;text-align:center;font-size:18px;margin-top:20px" class="title"><strong>
            <?php the_title(); ?> </strong> </p>
        </div>
    <?php endforeach; ?>
    <?php wp_reset_query(); ?>
</div>

しかし、現在の投稿と同じタグからも表示する方法は?

LTOありがとう!

1
thebigE

タグは 分類法はpost_tag です。あなたはそれらを tax_queryを介してget_posts() で使うことができます。

wp_get_post_tags() はオブジェクトの配列を返すので、クエリにはオブジェクトごとに1つのフィールドしか必要ないので、少し整理する必要があります。

$tag_objects = wp_get_post_tags($post->ID);
$tags = array();
foreach ($tag_objects as $tag_object) {
    $tags[] = $tag_object->term_id;
}
$myposts = get_posts(array(
    'numberposts' => -1,
    'offset' => 0,
    'category__in' => array($category),
    'tax_query' => array(
        array(
            'taxonomy' => 'post_tag',
            'field'    => 'term_id',
            'terms'    => $tags,
        ),
    ),
    'post_status'=>'publish',
    'order'=>'ASC'
));
1
kero