WP Learndash插件,获取与课程和课程相关的用户数据

时间:2018-03-19 18:38:41

标签: wordpress customization

您好我正在使用learndash Wordpress插件。我想获得与用户相关的数据,包括他注册的课程数量以及完成的课程数量。有没有办法检查这个? learndash会为此提供任何解决方案,还是应该自己查询数据?

感谢任何帮助。提前致谢。  如果您愿意,请询问更多详细信息。

3 个答案:

答案 0 :(得分:0)

您可以使用wp_query返回任何内容。试试这个:

function wpso49370180_get_course_name($courseid) {
global $wpdb;
$user_id = the_author_meta( 'ID' ); //alt method below
$query_course = "SELECT post_title 
                 FROM wp_posts 
                 WHERE post_type = 'sfwd-courses'   
                 AND post_status NOT IN ( 'trash','auto-draft','inherit' ) 
                 AND post_author='$user_id' LIMIT 10";

      return $wpdb->get_var($query_course);
}

您将需要知道user_id或从帖子中获取它(sfwd-测验,sfwd-课程,sfwd-课程)-参见下文。

您想要的数据可以全部(*)如果要获取post_type表中没有的更深的数据,则必须执行meta_query。

/**
 * Gets the author of the specified post. Can also be used inside the loop
 * to get the ID of the author of the current post, by not passing a post ID.
 * Outside the loop you must pass a post ID.
 *
 * @param int $post_id ID of post
 * @return int ID of post author
*/
function wpso49370180_get_author( $post_id = 0 ){
    $post = get_post( $post_id );
        return $post->post_author;
}

答案 1 :(得分:0)

您可以使用以下命令获取当前用户当前正在注册的所有课程ID:

learndash_user_get_enrolled_courses(get_current_user_id()

答案 2 :(得分:0)

我发现所有内容都存储在表learndash_user_activity中,您可以查询该表以获取用户统计信息。

例如,我通过以下查询获取给定课程的正在进行的用户列表:

public static function get_inprogress_users_for_course( $course_id )
{
    global $wpdb;
    
    if( empty( $course_id ) ) return [];
                                    
    $results = $wpdb->get_results( "SELECT `user_id` FROM `" . $wpdb->prefix . "learndash_user_activity` "
                                    ."WHERE `course_id` = '" . intval( $course_id ) . "' "
                                    ."AND `activity_type` = 'lesson' "
                                    ."GROUP BY `user_id`" );
                                    
    return $results;
}

以相同的方式,您可以获取曾经注册过的课程的所有用户的ID,将activity_type从查询中的“课程”更改为“课程”,并且如果您只想按以下方式注册课程用户,您可以将user_id添加到查询中,如下所示:

public static function get_courses_for_user( $user_id )
{
    global $wpdb;
    
    if( empty( $course_id ) ) return [];
                                    
    $results = $wpdb->get_results( "SELECT * FROM `" . $wpdb->prefix . "learndash_user_activity` "
                                    ."WHERE `user_id` = '" . intval( $user_id ) . "' "
                                    ."AND `activity_type` = 'course' "
                                    ."GROUP BY `course_id`" );
                                    
    return $results;
}

我知道这并不是您要搜索的内容,但是它仍然可能有用。