このエントリーをはてなブックマークに追加

関連記事を表示するのに役に立つタグ、wp_list_pluck、詳しくは後日追記します。とりあえず参照元だけ。http://www.cssigniter.com/ignite/programmatically-get-related-wordpress-posts-easily/

追記
投稿の属しているターム(複数、タクソノミー名はgenre)を取得し、その投稿を除くその他の投稿を5件表示、5件それぞれが属するタームを1つ取得して、その一覧へリンク

<?php $terms  = wp_get_object_terms( $post->ID, 'genre' );
$term_list = wp_list_pluck( $terms, 'slug' );
$args = array(
    'posts_per_page' => 5,
    'post__not_in'   => array( $post->ID ),
    'tax_query'      => array(
        array(
            'taxonomy' => 'genre',
            'field'    => 'slug',
            'terms'    => $term_list
        )
    )
);
	$the_query = new WP_Query( $args );
?>
<?php if ($the_query->have_posts()) : ?>
<ul>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <p><a href="<?php $genres = get_the_terms( $post->ID, 'genre' ); $genre = array_pop($genres); echo get_term_link($genre->term_id, 'genre'); ?>">一覧</a></p></li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_query(); ?>

2016/5 追記
ブログの同じカテゴリーからランダムに表示、ニュースリリースの記事は除く

<?php $terms  = wp_get_object_terms( $post->ID, 'category' );
$term_list = wp_list_pluck( $terms, 'slug' );
$args = array(
    'posts_per_page' => 3,
    'post__not_in'   => array( $post->ID ),
    'orderby'        => 'rand',
    'tax_query'      => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => $term_list
        ),
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => 'newsrelease',
            'operator' => 'NOT IN'
        )
    )
);
	$the_query = new WP_Query( $args );
?>

2015.01.08 投稿 2016.05.29 更新

新しい情報を追記している場合はありますが、古い情報の修正はしていません。投稿日・文中の日付を参照してください。

Recent Articles