context = apply_filters( 'acadlix_course_page_context', ACADLIX_COURSE_CPT ); if ( in_array($this->context, [ ACADLIX_COURSE_CATEGORY_TAXONOMY, ACADLIX_COURSE_TAG_TAXONOMY ]) ) { $this->term = get_queried_object(); } $this->checkout_url = get_permalink(acadlix()->helper()->acadlix_get_option('acadlix_checkout_page_id')); $this->dashboard_url = get_permalink(acadlix()->helper()->acadlix_get_option('acadlix_dashboard_page_id')); $this->search = isset($_GET['search']) ? sanitize_text_field($_GET['search']) : ''; // phpcs:ignore $this->page = max(1, (isset($_GET['page']) ? intval($_GET['page']) : 1)); $this->per_page = acadlix()->helper()->acadlix_get_option('acadlix_no_of_courses_per_page'); $this->column_per_row = acadlix()->helper()->acadlix_get_option('acadlix_column_per_row', 3); $request_taxonomy_categories = []; if (isset($_GET['taxonomy']) && is_array($_GET['taxonomy'])) { // phpcs:ignore $taxonomy = wp_unslash($_GET['taxonomy']); // phpcs:ignore if (is_array($taxonomy) && isset($taxonomy['course-category'])) { $request_taxonomy_categories = (array) $taxonomy['course-category']; } } if (!empty($request_taxonomy_categories)) { $this->categories = array_values(array_filter(array_map('intval', $request_taxonomy_categories))); } else { $this->categories = isset($_GET['categories']) ? array_values(array_filter(array_map('intval', (array) $_GET['categories']))) : []; // phpcs:ignore } $this->enable_rating_and_reviews = acadlix()->helper()->acadlix_get_option('acadlix_enable_rating_and_reviews') === 'yes'; $this->enable_course_filters = acadlix()->helper()->acadlix_get_option('acadlix_enable_course_filters') === 'yes'; if (is_user_logged_in()) { $userId = get_current_user_id(); $this->cart = acadlix()->model()->courseCart()->where('user_id', $userId)->pluck('item_id')->toArray(); $this->order_item = acadlix()->model()->orderItem()->with(['order'])->whereHas('order', function ($query) use ($userId) { $query->where('user_id', $userId)->where('status', Order::STATUS_SUCCESS); })->pluck('item_id')->toArray(); } else { if (isset($_COOKIE['acadlix_cart_token'])) { $this->cart = acadlix()->model()->courseCart()->where('cart_token', sanitize_text_field(wp_unslash($_COOKIE['acadlix_cart_token'])))->pluck('item_id')->toArray(); } } $query = $this->setup_query( $this->search, $this->categories, $this->term->term_id ?? null, $this->context, $this->page, $this->per_page ); $this->courses = $query['courses']; $this->course_count = $query['course_count']; } public function setup_query( $search = '', $categories = [], $term_id = null, $context = null, $page = 1, $per_page = 10 ) { $query = acadlix() ->model() ->course() ->ofCourse() ->when(!empty($search), function ($query) use ($search) { $query->where('post_title', 'like', '%' . $search . '%'); }) ->where('post_status', 'publish') ->orderBy('ID', 'desc'); if ($context === ACADLIX_COURSE_CPT) { $query->when(!empty($categories), function ($query) use ($categories) { $query->whereHas('course_categories', function ($q) use ($categories) { $q->whereIn('term_id', $categories); }); }); } if ($context === ACADLIX_COURSE_CATEGORY_TAXONOMY && $term_id) { $query->whereHas('course_categories', function ($q) use ($term_id) { $q->where('term_id', $term_id); }); } if ($context === ACADLIX_COURSE_TAG_TAXONOMY && $term_id) { $query->whereHas('course_tags', function ($q) use ($term_id) { $q->where('term_id', $term_id); }); } $course_count = $query->count(); if ($course_count <= $per_page) { $page = 1; } $courses = $query ->skip(($page - 1) * $per_page) ->take($per_page) ->get(); return [ 'courses' => $courses, 'course_count' => $course_count, ]; // $this->courses = apply_filters('acadlix_all_courses_list', $this->courses, $this->page, $this->search); } public function setPage($page) { $this->page = $page; } public function setCourseCount($count) { $this->course_count = $count; } protected function is_feature_enabled($feature) { $defaults = [ 'taxonomy_title' => [ ACADLIX_COURSE_CPT => false, ACADLIX_COURSE_CATEGORY_TAXONOMY => true, ACADLIX_COURSE_TAG_TAXONOMY => true, ], 'course_filters' => [ ACADLIX_COURSE_CPT => $this->enable_course_filters, ACADLIX_COURSE_CATEGORY_TAXONOMY => false, ACADLIX_COURSE_TAG_TAXONOMY => false, ], ]; $enabled = $defaults[$feature][$this->context] ?? false; /** * 🔥 EXTENSION POINT */ return apply_filters( 'acadlix_course_feature_enabled', $enabled, $feature, $this->context, $this ); } public function render() { $this->render_header(); $this->render_courses(); $this->render_footer(); } public function render_header() { global $wp_version; if (version_compare($wp_version, '5.9', '>=') && function_exists('wp_is_block_theme') && wp_is_block_theme()) { ?> > >
get('TextDomain'); echo wp_kses_post(do_blocks('')); } else { get_header(); } } public function render_courses() { $enable_course_filter = $this->is_feature_enabled('course_filters'); $all_course_page = [ [ 'component' => 'main', 'props' => [ 'id' => 'acadlix-all-course-page', 'class' => 'acadlix-all-course-page', 'data-context' => esc_attr($this->context), 'data-term-id' => esc_attr($this->term ? $this->term->term_id : ''), ], 'children' => [ $this->render_taxonomy_title(), $this->render_search(), $this->course_listener(), [ 'component' => 'section', 'props' => ['class' => 'acadlix-row'], 'children' => [ [ 'component' => 'div', 'props' => ['class' => 'acadlix-col-sm-12 acadlix-col-lg-3' . ($enable_course_filter ? '' : ' acadlix-d-none')], 'children' => [ $this->render_category_filter(), ] ], [ 'component' => 'div', 'props' => ['class' => 'acadlix-col-sm-12 acadlix-col-lg-' . ($enable_course_filter ? '9' : '12') . ' acadlix-course-list-container'], 'children' => [ [ 'component' => 'php', 'value' => function () { ob_start(); $this->render_all_courses($this->courses); return ob_get_clean(); } ] ] ], ], ], ], ] ]; $all_course_page = apply_filters('acadlix_all_courses_page', $all_course_page); acadlix()->helper()->acadlix_render_tree($all_course_page); } protected function course_listener() { return apply_filters('acadlix_all_course_listener', [ 'component' => 'div', 'props' => [ 'id' => 'acadlix-course-listener', ], ]); } protected function render_category_filter() { if (!$this->is_feature_enabled('course_filters')) { return []; } $categories = acadlix() ->model() ->wpTermTaxonomy() ->ofCourseCategory() ->with('term') ->where('count', '>', 0) ->get(); $single_category_children = []; foreach ($categories as $category) { $single_category_children[] = [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-single-category-filter' ], 'children' => [ [ 'component' => 'input', 'props' => [ 'type' => 'checkbox', 'name' => 'acadlix_course_category_filter', 'value' => esc_attr($category->term_id), 'id' => 'acadlix_course_category_filter_' . esc_attr($category->term_id), 'class' => 'acadlix-category-filter-checkbox', 'checked' => in_array($category->term_id, $this->categories) ? 'checked' : false, ] ], [ 'component' => 'label', 'props' => [ 'for' => 'acadlix_course_category_filter_' . esc_attr($category->term_id), 'class' => 'acadlix-category-filter-label acadlix-body2', ], 'value' => esc_html($category->term->name) ] ] ]; } return apply_filters('acadlix_all_course_category_filter', [ 'component' => 'div', 'props' => ['class' => 'acadlix-card acadlix-category-filter-card'], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-category-filter-header', 'data-open' => "true", ], 'children' => [ [ 'component' => 'h3', 'props' => [ 'class' => 'acadlix-category-filter-header-title' ], 'value' => esc_html__('Filter by Category', 'acadlix') ], [ 'component' => 'i', 'props' => [ 'class' => 'fa fa-chevron-down acadlix-category-filter-toggle' ] ] ] ], [ 'component' => 'div', 'props' => ['class' => 'acadlix-category-filter'], 'children' => $single_category_children ] ] ]); } public function render_all_courses($courses) { $course_children = []; foreach ($courses as $course) { $course_children[] = $this->render_single_course($course); } $all_course = apply_filters('acadlix_all_courses_render_all_courses', [ [ 'component' => 'div', 'children' => [ [ 'component' => 'div', 'props' => ['class' => 'acadlix-row'], 'children' => $course_children ], $this->render_pagination($courses), ] ], ], $courses); return acadlix()->helper()->acadlix_render_tree($all_course); } public function render_single_course($course) { $column_class = 'acadlix-col-lg-' . 12/$this->column_per_row . ' acadlix-col-md-6 acadlix-col-sm-12'; $this->set_type($course); $single_course_ui = [ 'component' => 'div', 'props' => [ 'class' => $column_class ], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-card acadlix-all-course-card' ], 'children' => [ $this->render_course_image($course), [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-card-body acadlix-all-course-card-body' ], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-all-course-body-detail', ], 'children' => [ $this->render_course_level($course), $this->render_course_rating($course), $this->render_course_title($course), $this->render_course_user($course), ] ], $this->render_course_footer($course), ] ] ] ] ] ]; $single_course_ui = apply_filters('acadlix_single_course_ui', $single_course_ui, $course); return $single_course_ui; } public function set_type($course) { if ($course->post_type == ACADLIX_COURSE_CPT) { $this->type = 'course'; } } /** * Image section */ protected function render_course_image($course) { return apply_filters('acadlix_all_course_single_course_image', [ 'component' => 'a', 'props' => [ 'href' => esc_url(get_permalink($course->ID)), ], 'children' => [ [ 'component' => 'img', 'props' => [ 'class' => 'acadlix-card-img-top acadlix-course-page-img', 'loading' => 'lazy', 'src' => esc_url(isset($course->thumbnail['url']) ? $course->thumbnail['url'] : ACADLIX_ASSETS_IMAGE_URL . 'demo-course.jpg'), 'alt' => isset($course->thumbnail['alt']) ? esc_attr($course->thumbnail['alt']) : esc_attr($course->post_title), ] ] ] ], $course); } /** * Difficulty chip */ protected function render_course_level($course) { return apply_filters('acadlix_all_course_single_course_level', [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-page-chip acadlix-body2' ], 'value' => esc_html( acadlix()->helper()->course()->getCourseLevelName($course->rendered_metas['difficulty_level'] ?? '') ) ], $course); } /** * Rating section */ protected function render_course_rating($course) { if (!$this->enable_rating_and_reviews) { return []; } $average_rating = $course->getAverageRating() ?? 0; $total_rating = $course->getTotalRatings() ?? 0; return apply_filters('acadlix_all_course_single_course_rating', [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-rating' ], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-rating-stars' ], 'children' => acadlix()->helper()->course()->courseReviewStar($average_rating) ], [ 'component' => 'div', 'props' => ['class' => 'acadlix-course-rating-value acadlix-body1'], 'value' => sprintf( /* translators: 1: average rating, 2: total ratings */ esc_html__('%1$.2f (%2$d ratings)', 'acadlix'), $average_rating, $total_rating ), ] ] ], $course); } /** * Title */ protected function render_course_title($course) { return apply_filters('acadlix_all_course_single_course_title', [ 'component' => 'h4', 'props' => [ 'class' => 'acadlix-course-page-card-title' ], 'children' => [ [ 'component' => 'a', 'props' => [ 'href' => esc_url(get_permalink($course->ID)) ], 'value' => esc_html($course?->post_title) ] ] ], $course); } /** * User info */ protected function render_course_user($course) { return apply_filters('acadlix_all_course_single_course_user', [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-user acadlix-body2' ], 'value' => acadlix()->helper()->course()->getCourseUserHtml($course) // Already returns safe HTML ], $course); } protected function render_course_footer($course) { return apply_filters('acadlix_all_course_single_course_footer', [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-page-card-footer' ], 'children' => [ $this->render_course_price($course), [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-d-flex acadlix-justify-end acadlix-align-content-end acadlix-course-action-buttons' ], 'children' => [ $this->render_course_buttons($course), $this->render_course_wishlist($course), ] ] ] ], $course); } /** * Price section */ protected function render_course_price($course) { $enabled_sale_price = $course->rendered_metas['enable_sale_price'] ?? false; $sale_price = $course->rendered_metas['sale_price'] ?? 0; $price = $course->rendered_metas['price'] ?? 0; $price_html = acadlix()->helper()->course()->getCoursePrice( $enabled_sale_price ? $sale_price : $price ); $children = [ [ 'component' => 'span', 'props' => [ 'class' => 'acadlix-course-page-price acadlix-body1' ], 'value' => esc_html($price_html) ] ]; if (!empty($course->rendered_metas['enable_sale_price'])) { $children[] = [ 'component' => 'span', 'props' => [ 'class' => 'acadlix-course-page-before-price acadlix-subtitle2' ], 'value' => esc_html( acadlix()->helper()->course()->getCoursePrice($course->rendered_metas['price']) ) ]; } return apply_filters('acadlix_all_course_single_course_price', [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-page-card-price' ], 'children' => $children ], $course); } protected function render_go_to_checkout_button($course) { return apply_filters('acadlix_all_course_single_course_go_to_checkout_button', [ 'component' => 'button', 'props' => [ 'data-link' => esc_url($this->checkout_url), 'class' => 'acadlix-action-button acadlix-subtitle2 acadlix-go-to-checkout' ], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-action-button-text' ], 'value' => esc_html__('Go to Checkout', 'acadlix') ] ] ], $course); } protected function render_go_to_course_button($course) { return apply_filters('acadlix_all_course_single_course_go_to_course_button', [ 'component' => 'button', 'props' => [ 'data-link' => esc_url($this->dashboard_url . '#/courses'), 'class' => 'acadlix-action-button acadlix-subtitle2 acadlix-go-to-course' ], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-action-button-text' ], 'value' => esc_html__('Go to Course', 'acadlix') ] ] ], $course); } protected function render_start_now_button($course) { return apply_filters('acadlix_all_course_single_course_start_now_button', [ 'component' => 'button', 'props' => [ 'class' => 'acadlix-action-button acadlix-subtitle2 acadlix-start-now', 'data-id' => esc_attr($course->ID), 'data-type' => esc_attr($this->type), ], 'children' => [ [ 'component' => 'div', 'props' => ['class' => 'acadlix-action-button-text'], 'value' => esc_html__('Start Now', 'acadlix') ], [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-btn-loader', ] ] ] ], $course); } protected function render_buy_now_button($course) { return apply_filters('acadlix_all_course_single_course_buy_now_button', [ 'component' => 'button', 'props' => [ 'class' => 'acadlix-action-button acadlix-subtitle2 acadlix-buy-now', 'data-id' => esc_attr($course->ID), 'data-type' => esc_attr($this->type), ], 'children' => [ [ 'component' => 'div', 'props' => ['class' => 'acadlix-action-button-text'], 'value' => ' ' . esc_html__('Buy Now', 'acadlix') ], [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-btn-loader', ] ] ] ], $course); } protected function render_course_buttons($course) { // acadlix()->helper()->acadlix_dd($course, true); $check_registration_date = acadlix()->helper()->course()->checkRegistrationDate( $course->rendered_metas['start_date'] ?? null, $course->rendered_metas['end_date'] ?? null ); $button = []; $checkout_button = $this->render_go_to_checkout_button($course); $go_to_course_button = $this->render_go_to_course_button($course); $start_now_button = $this->render_start_now_button($course); $buy_now_button = $this->render_buy_now_button($course); $is_course_purchased = false; $cart = []; if (is_user_logged_in()) { $userId = get_current_user_id(); $is_course_purchased = $course->isPurchasedBy($userId); $cart = acadlix()->model()->courseCart()->where([ ['user_id', '=', $userId], ['item_id', '=', $course->ID], ['type', '=', $this->type], ])->first(); } else { if (isset($_COOKIE['acadlix_cart_token'])) { $cart = acadlix() ->model() ->courseCart() ->where('cart_token', sanitize_text_field(wp_unslash($_COOKIE['acadlix_cart_token']))) ->where('item_id', $course->ID) ->where('type', $this->type) ->first(); } } if ($check_registration_date['status']) { if ($course->isFree()) { // Free course flow if ($is_course_purchased) { $button = $go_to_course_button; } elseif ($cart) { $button = $checkout_button; } else { $button = $start_now_button; } } else { // Paid course flow if ($is_course_purchased) { $button = $go_to_course_button; } elseif ($cart) { $button = $checkout_button; } else { $button = $buy_now_button; } } } return apply_filters('acadlix_all_course_single_course_buttons', $button, $course); } /** * Wishlist section */ protected function render_course_wishlist($course) { if (!is_user_logged_in() || acadlix()->helper()->acadlix_get_option('acadlix_disable_wishlist') !== 'no') { return null; } $course_wishlist_count = acadlix() ->model() ->userActivityMeta() ->ofWishlist() ->where([ 'type_id' => $course->ID, 'user_id' => get_current_user_id(), 'type' => $this->type, ]) ->count(); return apply_filters('acadlix_all_course_single_course_wishlist', [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-wishlist' ], 'children' => [ [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-page-icon-element acadlix-add-to-wishlist ' . ($course_wishlist_count == 0 ? '' : 'acadlix-hidden'), 'id' => 'add-to-wishlist-' . esc_attr($course->ID), 'title' => esc_attr__('Add to Wishlist', 'acadlix'), 'data-id' => esc_attr($course->ID), 'data-type' => esc_attr($this->type), ], 'children' => [ ['component' => 'i', 'props' => ['class' => 'far fa-heart']], ['component' => 'div', 'props' => ['class' => 'acadlix-btn-loader']], ], ], [ 'component' => 'div', 'props' => [ 'class' => 'acadlix-course-page-icon-element acadlix-remove-from-wishlist ' . ($course_wishlist_count > 0 ? '' : 'acadlix-hidden'), 'id' => 'remove-from-wishlist-' . esc_attr($course->ID), 'title' => esc_attr__('Remove From Wishlist', 'acadlix'), 'data-id' => esc_attr($course->ID), 'data-type' => esc_attr($this->type), ], 'children' => [ ['component' => 'i', 'props' => ['class' => 'fas fa-heart']], ['component' => 'div', 'props' => ['class' => 'acadlix-btn-loader']], ], ] ] ], $course); } public function render_taxonomy_title() { if (!$this->is_feature_enabled('taxonomy_title')) { return []; } $title = ''; if ($this->context === ACADLIX_COURSE_CATEGORY_TAXONOMY && $this->term) { $title = $this->term->name; } if ($this->context === ACADLIX_COURSE_TAG_TAXONOMY && $this->term) { $title = $this->term->name; } if (!empty($title)) { $title_ui = [ 'component' => 'h1', 'props' => ['class' => 'acadlix-all-course-taxonomy-title acadlix-h3'], 'value' => esc_html($title) ]; return apply_filters('acadlix_all_course_taxonomy_title_ui', $title_ui); } return ''; } public function render_search() { $search_ui = [ 'component' => 'section', 'props' => ['class' => 'acadlix-card acadlix-my-4 acadlix-course-filter-bar'], 'children' => [ [ 'component' => 'div', 'props' => ['class' => 'acadlix-course-filter-bar-body acadlix-card-body'], 'children' => [ [ 'component' => 'div', 'props' => ['class' => 'acadlix-h4'], 'value' => "" ], [ 'component' => 'form', 'props' => ['method' => 'GET', 'class' => 'acadlix-d-flex'], 'children' => [ [ 'component' => 'input', 'props' => [ 'type' => 'text', 'name' => 'search', 'value' => $this->search, 'class' => 'acadlix-course-search-input', 'placeholder' => 'Search...' ] ] ] ] ] ] ] ]; return apply_filters('acadlix_all_course_search_ui', $search_ui); } public function render_pagination($courses) { global $wp; $total_pages = (int) ceil($this->course_count / $this->per_page); // Previous page URL $base_url = home_url($wp->request) . '/'; // $prev_url = add_query_arg( // ['paged' => max(1, $this->page - 1), 'search' => $this->search], // $base_url // ); // // Next page URL // $next_url = add_query_arg( // ['paged' => min($total_pages, $this->page + 1), 'search' => $this->search], // $base_url // ); // Page items $page_items = []; // Previous $page_items[] = [ 'component' => 'li', 'props' => ['class' => 'acadlix-course-pagination-item'], 'children' => [ [ 'component' => 'a', 'props' => [ 'href' => "javascript:void(0)", 'class' => 'acadlix-course-pagination-link acadlix-course-pagination-prev ' . (1 == $this->page ? 'acadlix-course-pagination-disabled' : ''), 'aria-label' => 'Previous', ], 'children' => [ [ 'component' => 'span', 'props' => [ 'aria-hidden' => 'true', 'class' => 'acadlix-course-pagination-arrow-left acadlix-subtitle1' ], 'value' => '←' ] ] ] ] ]; // Numbered pages for ($i = 1; $i <= $total_pages; $i++) { // $base_url = home_url($wp->request) . '/'; // $url = add_query_arg( // ['paged' => $i, 'search' => $this->search], // $base_url // ); $page_items[] = [ 'component' => 'li', 'props' => [ 'class' => 'acadlix-course-pagination-item ' . ($i == $this->page ? 'acadlix-course-pagination-active' : ''), 'id' => 'acadlix-course-pagination-page-' . esc_attr($i), ], 'children' => [ [ 'component' => 'a', 'props' => [ 'href' => "javascript:void(0)", 'class' => 'acadlix-course-pagination-link acadlix-course-pagination-page', 'data-page' => esc_attr($i), ], 'value' => esc_html($i) ] ] ]; } // Next $page_items[] = [ 'component' => 'li', 'props' => ['class' => 'acadlix-course-pagination-item'], 'children' => [ [ 'component' => 'a', 'props' => [ 'href' => "javascript:void(0)", 'class' => 'acadlix-course-pagination-link acadlix-course-pagination-next ' . ($this->page >= $total_pages ? 'acadlix-course-pagination-disabled' : ''), 'aria-label' => 'Next', ], 'children' => [ [ 'component' => 'span', 'props' => [ 'aria-hidden' => 'true', 'class' => 'acadlix-course-pagination-arrow-right acadlix-subtitle1' ], 'value' => '→' ] ] ] ] ]; // Info text $start = (($this->page - 1) * $this->per_page) + 1; $end = min($this->course_count, $this->page * $this->per_page); $pagination_ui = [ 'component' => 'section', 'props' => ['class' => 'acadlix-course-pagination-container'], 'children' => [ [ 'component' => 'nav', 'props' => ['class' => 'acadlix-course-pagination-nav'], 'children' => [ [ 'component' => 'ul', 'props' => [ 'class' => 'acadlix-course-pagination-list acadlix-box-shadow-2', 'data-total-pages' => esc_attr($total_pages), 'data-current-page' => esc_attr($this->page), ], 'children' => $page_items ] ] ], [ 'component' => 'div', 'props' => ['class' => 'acadlix-course-pagination-info acadlix-subtitle1'], 'value' => sprintf( /* translators: %1$s: start, %2$s: end, %3$s: total count */ __('Showing %1$s-%2$s of %3$s results', 'acadlix'), esc_html($start), esc_html($end), esc_html($this->course_count) ) ] ] ]; // Render via helper return apply_filters('acadlix_all_course_pagination_ui', $pagination_ui); } public function render_footer() { global $wp_version; if (version_compare($wp_version, '5.9', '>=') && function_exists('wp_is_block_theme') && true === wp_is_block_theme()) { $theme = wp_get_theme(); $theme_slug = $theme->get('TextDomain'); echo wp_kses_post(do_blocks('')); echo '
'; wp_footer(); echo ''; echo ''; } else { get_footer(); } } }