
        $actualizados = 0;

        foreach ($usuarios as $user_id) {
            $this->set_learndash_course_access_date($user_id, $course_id, $timestamp);
            $actualizados++;
        }

        if ($autoalinear) {
            $this->guardar_config_autoalineacion($course_id, $wishlist_level_id, $timestamp);
        }

        wp_redirect(admin_url('admin.php?page=noebo-gestion-fechas&mensaje=ok&actualizados=' . $actualizados));
        exit;
    }

    private function get_learndash_courses() {
        return get_posts(array(
            'post_type'      => 'sfwd-courses',
            'post_status'    => 'publish',
            'posts_per_page' => -1,
            'orderby'        => 'title',
            'order'          => 'ASC',
        ));
    }

    private function get_wishlist_levels() {
        $levels = array();

        if (function_exists('wlmapi_get_levels')) {
            $response = wlmapi_get_levels();

            if (!empty($response['levels']['level'])) {
                foreach ($response['levels']['level'] as $level) {
                    if (!empty($level['id']) && !empty($level['name'])) {
                        $levels[] = array(
                            'id'   => $level['id'],
                            'name' => $level['name'],
                        );
                    }
                }
            }
        }

        return $levels;
    }

    private function get_users_by_wishlist_level($level_id) {
        $usuarios = array();

        if (!function_exists('wlmapi_get_level_members')) {
            return $usuarios;
        }

        $response = wlmapi_get_level_members($level_id);

        if (empty($response['members']['member'])) {
            return $usuarios;
        }

        $members = $response['members']['member'];

        if (isset($members['id'])) {
            $members = array($members);
        }

        foreach ($members as $member) {
            if (!empty($member['id'])) {
                $usuarios[] = intval($member['id']);
            }
        }

        return array_unique($usuarios);
    }

    private function set_learndash_course_access_date($user_id, $course_id, $timestamp) {
        $meta_key = 'course_' . intval($course_id) . '_access_from';

        update_user_meta(
            intval($user_id),
            $meta_key,
            intval($timestamp)
        );
    }

    private function guardar_config_autoalineacion($course_id, $wishlist_level_id, $timestamp) {
        $config = get_option($this->option_key, array());

        $key = intval($course_id) . '_' . sanitize_text_field($wishlist_level_id);

        $config[$key] = array(
            'course_id'         => intval($course_id),
            'wishlist_level_id' => sanitize_text_field($wishlist_level_id),
            'timestamp'         => intval($timestamp),
        );

        update_option($this->option_key, $config);
    }

    public function autoalinear_usuario($user_id, $levels) {
        $config = get_option($this->option_key, array());

        if (empty($config)) {
            return;
        }

        if (!is_array($levels)) {
            $levels = array($levels);
        }

        foreach ($levels as $level_id) {
            foreach ($config as $item) {
                if ((string) $item['wishlist_level_id'] === (string) $level_id) {
                    $this->set_learndash_course_access_date(
                        intval($user_id),
                        intval($item['course_id']),
                        intval($item['timestamp'])
                    );
                }
            }
        }
    }
}

new NoeBo_Gestion_Fechas_LearnDash();<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://instituto.noebo.org/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-post-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-page-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-forum-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-topic-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-reply-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-sfwd-courses-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-sfwd-lessons-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-sfwd-topic-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-sfwd-quiz-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-sfwd-certificates-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-posts-coursenote-1.xml</loc></sitemap><sitemap><loc>https://instituto.noebo.org/wp-sitemap-taxonomies-topic-tag-1.xml</loc></sitemap></sitemapindex>
