如果与主帖子类别匹配,则显示来自自定义帖子类型的内容

时间:2014-03-03 作者:Rvervuurt

我用this solution, 但是,我想过滤更多内容,只显示与主帖子类别匹配的自定义帖子类型中的帖子(或者更准确地说是slug,但解决方案没有区别)。

我使用以下方法获得主帖子的slug:

$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
我以同样的方式从自定义post类型中获取slug,但它在一个循环中,循环通过自定义post类型。

$category_course = get_the_category();
$cat_slug_course = $category_course[0]->slug;
echo $cat_slug_course;
所以,我现在想要的是,只显示自定义类型中与原始帖子的slug匹配的帖子。

在伪代码中,这类似于:

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; ?>

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

比您自己找到的更好的解决方案是,首先只检索匹配的帖子。实际上,您可能检索到错误的数据。对于您的代码(您的解决方案),如果结果集中的两篇文章不匹配,会发生什么情况?您根本没有得到任何输出。

您的描述/代码有点脱节,所以我有点猜测,这是未经测试的,但我认为您想要的是:

$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>\';
}

SO网友:Rvervuurt

好吧,这比预期的要简单。

<?php if ($cat_slug_course == $cat_slug): ?>
    <div class="landing_title">
        <?php the_title(); ?>
    </div>
        <?php the_content();?>
    </div>
<?php endif; ?>
解决它。没想到,但确实如此。

结束

相关推荐

wp_query inside the_loop

我的循环有这个问题。我正在制作一个将从主查询调用的快捷码。它将显示在\\u循环的首页上。因为某种我无法理解的原因。第二个查询只显示一篇文章,而它应该显示3篇。因此,短代码将出现在页面内容中。在“设置”部分,我将首页设置为“主页”,将博客页面设置为“博客”,但主页不是模板。它是由索引生成的。使用WordPress 2014主题的php页面。因此,在“主页”内容区域,我有一个快捷码,它生成第二个循环,从一个名为“特色”的类别中获取3篇文章。 $featured = new WP_Query( array( \