我有一个学习网站,里面有一些课程,每个课程都有副课程来组成课程。我需要生成已发布课程列表及其下的子主题。我获得课程的查询:
PackageForm
返回已发布的课程。现在我需要在每个课程下获得子主题。主题的帖子类型是" sfwd-topic"但我不明白2如何相关,所以我可以查询它。
答案 0 :(得分:0)
我做这件事的方式很少。如果你没有进入次级子主题或类似的话,这将是我所知道的最简单的。
您需要为主题本身运行第二个查询。如果您的深度不超过2级,或者您的子主题未达到每门课程的数百个,则不应遇到任何性能问题。
在你的while循环中,构建数组$ argsTwo,就像你使用$ args一样,然后设置'post_type' => 'sfwd-topic'
。
$argsTwo = array('post_type' => 'sfwd-topics',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'ID',
);
然后,添加另一个while循环并遍历子主题。
while ( $loop->have_posts() ) : $loop->the_post();
$argsTwo = array('post_type' => 'sfwd-topics',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'ID',
);
$loopChild = new WP_Query( $argsTwo );
while ( $loopChild->have_posts() ) : $loopChild->the_post();
endwhile;
endwhile;
这将获得当前帖子的子主题,这是您的课程之一。以您喜欢的格式回应您需要的帖子值。
当您的父循环移动到下一个帖子时,它将再次通过子循环以获取新帖子的所有子主题。祝你好运!
编辑几乎忘了,新查询将获取所有主题,而不是相关的主题,而不引用$ argsTwo中的父主题。
您需要将父ID添加到$ argsTwo中的'post_parent'
键,如下所示:
$argsTwo = array(
'post_type' => 'sfwd-topic',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'ID',
'post_parent' => $loop->ID
);