web-dev-qa-db-ja.com

メインの投稿カテゴリと一致する場合、カスタム投稿タイプのコンテンツを表示する

私は この解決法 を使って投稿内のカスタム投稿タイプから表示する問題を解決しました。メイン投稿のカテゴリに一致するカスタム投稿タイプ(またはより正確にはスラグですが、解決策に違いはありません)。

これを使用して、メインの投稿のスラッグを取得します。

$category_main = get_the_category();
$cat_slug = $category_main[0]->slug;
echo $cat_slug; // This is just to see if I got the right output

私は同じ方法でカスタム投稿タイプからスラッグを取得しますが、カスタム投稿タイプをループ処理するループ内にあります。

$category_course = get_the_category();
$cat_slug_course = $category_course[0]->slug;
echo $cat_slug_course;

だから、今欲しいのは、オリジナルの投稿のスラッグにマッチするカスタムタイプの投稿のみを表示することです。

疑似コードでは、これは次のようになります。

If $cat_slug_course is equal to $cat_slug, display all custom type posts with slug $cat_slug_course and none other

これはカスタムタイプの投稿を表示するために使用されるループです。

$args = array( 'post_type' => 'Course', 'posts_per_page' => 2 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

    $category_course = get_the_category();
    $cat_slug_course = $category_course[0]->slug;
    echo $cat_slug_course; // This is just to see if I got the right output
    echo '<br />';    
    the_title();
    echo '<div class="entry-content">';
    the_content();
    echo '</div>';
endwhile; ?>
1
Rvervuurt

あなたがあなた自身で見つけたものより良い解決策は、そもそも一致する投稿を検索することです。現状のまま、あなたは潜在的に間違ったデータを検索しています。あなたのコード(あなたの解決策)を使って、結果セットの2つの投稿が一致しない場合、どうなりますか?まったく何も出力されません。

あなたの説明/コードは少しばらばらになっているので、私は物事を少し推測しています、そしてこれはテストされていません、しかし私はあなたが欲しいものがそれであると思います:

$category_main = get_the_category();
$cat_slug = $category_main[0]->slug;
// echo $cat_slug; // This is just to see if I got the right output
$args = array( 
  'post_type' => 'Course', 
  'posts_per_page' => 2,
  'category_name' => $cat_slug,
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) {
  $loop->the_post();

  $category_course = get_the_category();
  $cat_slug_course = $category_course[0]->slug;
  //   echo $cat_slug_course; // This is just to see if I got the right output
  echo '<br />';    
  the_title();
  echo '<div class="entry-content">';
  the_content();
  echo '</div>';
}
2
s_ha_dum

さて、それは予想以上に単純でした。

<?php if ($cat_slug_course == $cat_slug): ?>
    <div class="landing_title">
        <?php the_title(); ?>
    </div>
        <?php the_content();?>
    </div>
<?php endif; ?>

それを解決します。それを期待しませんでした、しかしそれはします。

0
Rvervuurt