web-dev-qa-db-ja.com

wp_query - 投稿と同じカテゴリの投稿を表示する

自分の投稿ページに、元の投稿と同じカテゴリの他の投稿のリストを表示しようとしています。これまでのところ私はこれを手に入れました、そしてこれはうまくいかないようです:

<?php

    $args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'post__not_in' => array( get_the_ID() ),
        'category'     => array( get_the_category() ),
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

?>

    <?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>

<a class="popup-article-picture" href="<?php the_permalink(); ?>" style="background-image: url('<?php the_post_thumbnail_url(); ?>');"></a>
<a class="popup-article-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

    <?php endwhile; endif; wp_reset_postdata(); ?>
2
ERDFX

私は答えを見つけました:

<?php

    $cats = get_the_category();
    $args = array(
        'post_type' => 'article',
        'post__not_in' => array( get_the_ID() ),
        'posts_per_page' => 5,
        'cat'     => $cats[0]->term_id,
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

?>  

<?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>   

<!--HTML-->

<?php endwhile; endif; wp_reset_postdata(); ?>
2
ERDFX

あなたはarticleというカスタム投稿タイプを照会しようとしています。投稿タイプarticleにデフォルトのWordPress投稿カテゴリを使用していますか。またはその投稿タイプのカスタム分類を登録しましたか。私はあなたがCPTにデフォルトのWordPressカテゴリを使っていると仮定します。だから最初のステップは単一のページから現在のカテゴリを取得することです。次の関数は、ループの外側から投稿に添付されているカテゴリを返します。

get_the_category();

termオブジェクトの配列を返します。そして、この配列からスラッグを取得してクエリに渡す必要があります。単一の投稿に対して1つのカテゴリしか割り当てられていないとします。

$category_obj = get_the_category();
$category = $category_obj[0]->slug;

今すぐあなたの関連記事のクエリでそれを使用することができます。

$args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'category'     => $category,
        'meta_query' => array(
                    array(
                    'key' => 'recommended_article',
                    'value' => '1',
                    'compare' => '=='
                        )
                    )
    );
    $query = new WP_Query( $args );

また、投稿タイプにカスタム分類法を使用している場合は、カスタム分類法に関してお手伝いできるように、Googleにお知らせください。

1
Anwer AR