我正在将一个站点从LearnPress LMS移动到LearnDash LMS,并且我需要移动一个自定义函数,该函数在用户完成课程时更改用户角色(现在只有一个过程)。用户流如下所示:新用户注册-> --他们被分配了一个预订阅者角色(此代码正在工作,参见下面)。一旦用户完成了课程,他们的用户角色就会从预订阅服务器变为订阅服务器.
function cst_pre_creator_role() {
if ( get_option( 'pre_creator_role_version' ) < 1 ) {
add_role( 'pre_subscriber', 'Pre Creator', array( 'read' => true, 'level_0' => true ) );
update_option( 'pre_creator_role_version', 1 );
}}
add_action( 'user_register', 'cst_change_role', 10, 2 );
function cst_change_role($user_id, $userdata){
$user = new WP_User( $user_id );
$user->set_role( 'pre_subscriber' );
}我遇到的问题是如何将Learndash函数链接到返回完成状态为true或类似的函数。我在看learndash_course_completed / learndash_course_status。
下面是使用LearnPress的代码。
add_action('wp_head', function(){
if(is_user_logged_in()){
$user = wp_get_current_user();
if ( in_array( 'pre_subscriber', (array) $user->roles ) ) {
$profile = LP_Profile::instance( $user->ID );
$Lpuser = $profile->get_user();
$course_id = 8217;
$course = learn_press_get_course( $course_id );
$course_data = $Lpuser->get_course_data( $course_id );
$course_results = $course_data->get_results( '' );
$status = $course_results['status'];
$grade = $course_data->get_graduation();
if($grade == "passed"){
// Remove role
$user->remove_role( 'pre_subscriber' );
// Add role
$user->add_role( 'subscriber' );
}
}
}
});任何帮助将此LearnPress函数转换为LearnDash函数都将不胜感激。
发布于 2022-04-20 21:10:40
修好了。以下是代码:
add_action('wp_head', function(){
if(is_user_logged_in()){
$user = wp_get_current_user();
if ( in_array( 'pre_subscriber', (array) $user->roles ) ) {
$passed = learndash_user_quiz_has_completed($user->ID, 8731, 8388);
if($passed){
// Remove role
$user->remove_role( 'pre_subscriber' );
// Add role
$user->add_role( 'subscriber' );
}
}
}}
);https://wordpress.stackexchange.com/questions/404282
复制相似问题