Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询以获取learndash主题_Php_Wordpress - Fatal编程技术网

Php 查询以获取learndash主题

Php 查询以获取learndash主题,php,wordpress,Php,Wordpress,我有一个learndash网站,里面有一些课程,每个课程都有副主题来组成课程。我需要生成一个已发布课程及其子主题的列表。我对获取课程的查询: $args= array('post_type' => 'sfwd-courses', 'post_status' => 'publish', 'order' => 'DESC', 'orderby' => 'ID', 'mycourse

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

$args= array('post_type' => 'sfwd-courses',
            'post_status' => 'publish',
            'order' => 'DESC',
            'orderby' => 'ID',
            'mycourses' => false);
$loop = new WP_Query( $args );
 while ( $loop->have_posts() ) : $loop->the_post();
    endwhile;

这将返回已发布的课程。现在我需要得到每门课程的副主题。主题的帖子类型是“sfwd topic”,但我不明白这两个主题是如何关联的,所以我可以查询它。

我这样做的方法很少。这将是我所知道的最简单的方法,如果你不涉及子主题或类似的内容

您需要为主题本身运行第二个查询。如果你的课程深度不超过2个级别,或者你的子主题没有达到每门课程的数百个级别,那么你不应该遇到任何性能问题

在while循环中,构建数组$argsTwo,就像创建$args一样,并设置
'post\u 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;
这将获得当前帖子的子主题,这是您的课程之一。以您喜欢的格式回显所需的POST值

当父循环移动到下一篇文章时,它将再次通过子循环获取新文章的所有子主题。祝你好运

EDIT几乎忘记了,新查询将获得所有主题,而不是相关主题,而不引用$argsTwo中的父主题

您需要将父ID添加到$argsTwo中的
'post\u parent'
键中,如下所示:

$argsTwo = array(
    'post_type' => 'sfwd-topic',
    'post_status' => 'publish',
    'order' => 'DESC',
    'orderby' => 'ID',
    'post_parent' => $loop->ID
);

此查询返回一些相关主题,而不是所有相关主题将“每页帖子”=>-1添加到数组中。