查询以获取Learnndash主题

时间:2018-03-23 17:58:46

标签: php wordpress

我有一个学习网站,里面有一些课程,每个课程都有副课程来组成课程。我需要生成已发布课程列表及其下的子主题。我获得课程的查询:

PackageForm

返回已发布的课程。现在我需要在每个课程下获得子主题。主题的帖子类型是" sfwd-topic"但我不明白2如何相关,所以我可以查询它。

1 个答案:

答案 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
);