您好我正在使用learndash Wordpress插件。我想获得与用户相关的数据,包括他注册的课程数量以及完成的课程数量。有没有办法检查这个? learndash会为此提供任何解决方案,还是应该自己查询数据?
感谢任何帮助。提前致谢。 如果您愿意,请询问更多详细信息。
答案 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;
}
我知道这并不是您要搜索的内容,但是它仍然可能有用。