web-dev-qa-db-ja.com

カテゴリ別に関連記事を表示する方法

私のギャラリーサイトで、私は現在の写真の下に他の写真を表示したいです(単一の投稿)。私はもっ​​とコードを見ましたが、カテゴリを指定するように頼みますが、コードでカテゴリIDを手動で指定したいのではありません。投稿タイトルの代わりに、家やカテゴリのように表示できるようにします。

4
Felix

質問はすでに寄せられており、答えも掲載されています。

同じカテゴリの関連記事を表示するには?

関連する記事を表示したい場所には、ループの後にsingle.php内にこのコードを追加してください。

<?php

$related = get_posts( array( 'category__in' => wp_get_post_categories($post->ID), 'numberposts' => 5, 'post__not_in' => array($post->ID) ) );
if( $related ) foreach( $related as $post ) {
setup_postdata($post); ?>
 <ul> 
        <li>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a>
            <?php the_content('Read the rest of this entry &raquo;'); ?>
        </li>
    </ul>   
<?php }
wp_reset_postdata(); ?>

同じカテゴリの関連記事を記事の抜粋とタイトルと一緒に表示しますが、このコードに関連記事のタイトルだけを表示させたい場合はこの行を削除します。

<?php the_content('Read the rest of this entry &raquo;'); ?>
13
Sufiyan Ghori

ここでもう一つの清潔で非常に柔軟なオプション:

このコードをあなたのfunctions.phpファイルに入れてください

function example_cats_related_post() {

    $post_id = get_the_ID();
    $cat_ids = array();
    $categories = get_the_category( $post_id );

    if(!empty($categories) && is_wp_error($categories)):
        foreach ($categories as $category):
            array_Push($cat_ids, $category->term_id);
        endforeach;
    endif;

    $current_post_type = get_post_type($post_id);
    $query_args = array( 

        'category__in'   => $cat_ids,
        'post_type'      => $current_post_type,
        'post_not_in'    => array($post_id),
        'posts_per_page'  => '3'


     );

    $related_cats_post = new WP_Query( $query_args );

    if($related_cats_post->have_posts()):
         while($related_cats_post->have_posts()): $related_cats_post->the_post(); ?>
            <ul>
                <li>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                    <?php the_content(); ?>
                </li>
            </ul>
        <?php endwhile;

        // Restore original Post Data
        wp_reset_postdata();
     endif;

}

今、あなたは単にあなたのサイトのどこでもこの関数を呼び出すことができます:

<?php example_cats_related_post() ?>

必要に応じて、リスト要素を削除したりスタイルを設定したりできます。

1
Lawrence Oputa