Make WordPress Themes

Changeset 305342


Ignore:
Timestamp:
12/23/2025 11:09:04 AM (11 months ago)
Author:
themedropbox
Message:

New version of Academic Tutor - 0.0.2

Location:
academic-tutor/0.0.2
Files:
24 added
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • academic-tutor/0.0.2/footer.php

    r302519 r305342  
    8888
    8989                                            <span>
     90                                                <a href="https://www.themagnifico.net/products/academic-tutor" target="_blank">
    9091                                                <?php
    9192                                                /* translators: 1: Theme name,  */
    92                                                 printf( esc_html__( ' %1$s ', 'academic-tutor' ),'Academic Tutor Theme' );
     93                                                printf( esc_html__( ' %1$s ', 'academic-tutor' ),'Academic Tutor WordPress Theme' );
    9394                                                ?>
     95                                        </a>
    9496                                                <?php
    9597                                              /* translators: 1: Theme author. */
  • academic-tutor/0.0.2/functions.php

    r302519 r305342  
    6363
    6464                add_editor_style( array( '/editor-style.css' ) );
     65                add_action('wp_ajax_saas_software_dismissable_notice', 'saas_software_dismissable_notice');
     66                add_action( 'wp_ajax_tm-check-plugin-exists', 'tm_check_plugin_exists' );
     67                add_action( 'wp_ajax_tm_install_and_activate_plugin', 'tm_install_and_activate_plugin' );
    6568        }
    6669endif;
    … …  
    519522
    520523add_filter( 'nav_menu_item_args', 'academic_tutor_sub_menu_toggle_button', 10, 3 );
     524
     525if ( ! function_exists( 'academic_tutor_file_link_setup' ) ) :
     526
     527        function academic_tutor_file_link_setup() {
     528
     529                define( 'FREE_MNSSP_API_URL', 'https://license.themagnifico.net/api/general/' );
     530
     531                if ( ! defined( 'ACADEMIC_TUTOR_CONTACT_SUPPORT' ) ) {
     532                        define('ACADEMIC_TUTOR_CONTACT_SUPPORT',__('https://wordpress.org/support/theme/academic-tutor/','academic-tutor'));
     533                }
     534                if ( ! defined( 'ACADEMIC_TUTOR_REVIEW' ) ) {
     535                        define('ACADEMIC_TUTOR_REVIEW',__('https://wordpress.org/support/theme/academic-tutor/reviews/','academic-tutor'));
     536                }
     537                if ( ! defined( 'ACADEMIC_TUTOR_LIVE_DEMO' ) ) {
     538                        define('ACADEMIC_TUTOR_LIVE_DEMO',__('https://demo.themagnifico.net/academic-tutor/','academic-tutor'));
     539                }
     540                if ( ! defined( 'ACADEMIC_TUTOR_GET_PREMIUM_PRO' ) ) {
     541                        define('ACADEMIC_TUTOR_GET_PREMIUM_PRO',__('https://www.themagnifico.net/products/education-wordpress-theme-bundle','academic-tutor'));
     542                }
     543                if ( ! defined( 'ACADEMIC_TUTOR_PRO_DOC' ) ) {
     544                        define('ACADEMIC_TUTOR_PRO_DOC',__('https://demo.themagnifico.net/eard/wathiqa/lms-education-study-pro-doc/','academic-tutor'));
     545                }
     546                if ( ! defined( 'ACADEMIC_TUTOR_FREE_DOC' ) ) {
     547                        define('ACADEMIC_TUTOR_FREE_DOC',__('https://demo.themagnifico.net/eard/wathiqa/academic-tutor-free-doc/','academic-tutor'));
     548                }
     549                if ( ! defined( 'ACADEMIC_TUTOR_BUNDLE_LINK' ) ) {
     550                        define('ACADEMIC_TUTOR_BUNDLE_LINK',__('https://www.themagnifico.net/products/wordpress-theme-bundle','academic-tutor'));
     551                }
     552        }
     553endif;
     554add_action( 'after_setup_theme', 'academic_tutor_file_link_setup' );
     555
     556function tm_install_and_activate_plugin() {
     557
     558        $post_plugin_details = $_POST['plugin_details'];
     559        $plugin_text_domain = $post_plugin_details['plugin_text_domain'];
     560        $plugin_main_file               =       $post_plugin_details['plugin_main_file'];
     561        $plugin_url                                     =       $post_plugin_details['plugin_url'];
     562
     563        $plugin = array(
     564                'text_domain'   => $plugin_text_domain,
     565                'path'                          => $plugin_url,
     566                'install'               => $plugin_text_domain . '/' . $plugin_main_file
     567        );
     568
     569        wp_cache_flush();
     570
     571        $plugin_path = plugin_basename( trim( $plugin['install'] ) );
     572
     573
     574        $activate_plugin = activate_plugin( $plugin_path );
     575
     576        if($activate_plugin) {
     577
     578                echo $activate_plugin;
     579
     580        } else {
     581                echo $activate_plugin;
     582        }
     583
     584        $msg = 'installed';
     585
     586        $response = array( 'status' => true, 'msg' => $msg );
     587        wp_send_json( $response );
     588        exit;
     589}
     590
     591function tm_check_plugin_exists() {
     592                $plugin_text_domain = $_POST['plugin_text_domain'];
     593                $main_plugin_file       = $_POST['main_plugin_file'];
     594                $plugin_path = $plugin_text_domain . '/' . $main_plugin_file;
     595
     596                $get_plugins                                    = get_plugins();
     597                $is_plugin_installed    = false;
     598                $activation_status              = false;
     599                if ( isset( $get_plugins[$plugin_path] ) ) {
     600                $is_plugin_installed = true;
     601
     602                $activation_status = is_plugin_active( $plugin_path );
     603                }
     604                wp_send_json_success(
     605                array(
     606                'install_status'  =>    $is_plugin_installed,
     607                        'active_status'         =>      $activation_status,
     608                        'plugin_path'                   =>      $plugin_path,
     609                        'plugin_slug'                   =>      $plugin_text_domain
     610                )
     611                );
     612}
     613
     614/**
     615 * Get CSS
     616 */
     617
     618function academic_tutor_getpage_css($hook) {
     619        wp_register_script( 'admin-notice-script', get_template_directory_uri() . '/inc/admin/js/admin-notice-script.js', array( 'jquery' ) );
     620        wp_localize_script('admin-notice-script','academic_tutor',
     621                array('admin_ajax'      =>      admin_url('admin-ajax.php'),'wpnonce'  =>       wp_create_nonce('academic_tutor_dismissed_notice_nonce')
     622                )
     623        );
     624        wp_enqueue_script('admin-notice-script');
     625
     626    wp_localize_script( 'admin-notice-script', 'academic_tutor_ajax_object',
     627        array( 'ajax_url' => admin_url( 'admin-ajax.php' ) )
     628    );
     629        if ( 'appearance_page_academic-tutor-info' != $hook ) {
     630                return;
     631        }
     632}
     633add_action( 'admin_enqueue_scripts', 'academic_tutor_getpage_css' );
     634
     635//Admin Notice For Getstart
     636function academic_tutor_ajax_notice_handler() {
     637        if (!wp_verify_nonce($_POST['wpnonce'], 'academic_tutor_dismissed_notice_nonce')) {
     638                exit;
     639        }
     640    if ( isset( $_POST['type'] ) ) {
     641        $type = sanitize_text_field( wp_unslash( $_POST['type'] ) );
     642        update_option( 'dismissed-' . $type, TRUE );
     643    }
     644}
     645add_action( 'wp_ajax_academic_tutor_dismissed_notice_handler', 'academic_tutor_ajax_notice_handler' );
     646
     647function academic_tutor_deprecated_hook_admin_notice() {
     648
     649    $academic_tutor_dismissed = get_user_meta(get_current_user_id(), 'academic_tutor_dismissable_notice', true);
     650    if ( !$academic_tutor_dismissed) { ?>
     651        <div class="updated notice notice-success is-dismissible notice-get-started-class" data-notice="get_started" style="background: #f7f9f9; padding: 20px 10px; display: flex;">
     652                <div class="tm-admin-image">
     653                        <img style="width: 100%;max-width: 320px;line-height: 40px;display: inline-block;vertical-align: top;border: 2px solid #ddd;border-radius: 4px;" src="<?php echo esc_url(get_stylesheet_directory_uri()) .'/screenshot.png'; ?>" />
     654                </div>
     655                <div class="tm-admin-content" style="padding-left: 30px; align-self: center">
     656                        <h2 style="font-weight: 600;line-height: 1.3; margin: 0px;"><?php esc_html_e('Thank You For Choosing ', 'academic-tutor'); ?><?php echo wp_get_theme(); ?><h2>
     657                        <p style="color: #3c434a; font-weight: 400; margin-bottom: 30px;"><?php _e('Get Started With Theme By Clicking On Getting Started.', 'academic-tutor'); ?><p>
     658                        <a class="admin-notice-btn button button-primary button-hero" href="<?php echo esc_url( admin_url( 'themes.php?page=academic-tutor-info' )); ?>"><?php esc_html_e( 'Get started', 'academic-tutor' ) ?></a>
     659                        <a class="admin-notice-btn button button-primary button-hero notice-pro-btn" target="_blank" href="<?php echo esc_url( ACADEMIC_TUTOR_GET_PREMIUM_PRO ); ?>"><?php esc_html_e( 'Get Premium ', 'academic-tutor' ) ?></a>
     660                        <a class="admin-notice-btn button button-primary button-hero notice-bundle-btn" target="_blank" href="<?php echo esc_url( ACADEMIC_TUTOR_BUNDLE_LINK ); ?>"><?php esc_html_e( 'Buy All Themes - 120+ Templates', 'academic-tutor' ) ?></a>
     661                        <span style="padding-top: 15px; display: inline-block; padding-left: 8px;">
     662                        <span class="dashicons dashicons-admin-links"></span>
     663                        <a class="admin-notice-btn"      target="_blank" href="<?php echo esc_url( ACADEMIC_TUTOR_LIVE_DEMO ); ?>"><?php esc_html_e( 'View Demo', 'academic-tutor' ) ?></a>
     664                        </span>
     665                </div>
     666        </div>
     667    <?php }
     668}
     669
     670add_action( 'admin_notices', 'academic_tutor_deprecated_hook_admin_notice' );
     671
     672function academic_tutor_switch_theme() {
     673    delete_user_meta(get_current_user_id(), 'academic_tutor_dismissable_notice');
     674}
     675add_action('after_switch_theme', 'academic_tutor_switch_theme');
     676function academic_tutor_dismissable_notice() {
     677    update_user_meta(get_current_user_id(), 'academic_tutor_dismissable_notice', true);
     678    die();
     679}
     680
     681// Demo Content Code
     682
     683// Ensure WordPress is loaded
     684if (!defined('ABSPATH')) {
     685    exit;
     686}
     687
     688// Add the AJAX action to trigger theme mods import
     689add_action('wp_ajax_import_theme_mods', 'academic_tutor_demo_importer_ajax_handler');
     690
     691// Handle the AJAX request
     692function academic_tutor_demo_importer_ajax_handler() {
     693    // Sample data to import
     694    $theme_mods_data = array(
     695        'header_textcolor' => '000000',  // Example: change header text color
     696        'background_color' => 'ffffff',  // Example: change background color
     697        'custom_logo'      => 123,       // Example: set a custom logo by attachment ID
     698        'footer_text'      => 'Custom Footer Text', // Example: custom footer text
     699    );
     700
     701    // Call the function to import theme mods
     702    if (academic_tutor_demo_theme_importer($theme_mods_data)) {
     703        // After importing theme mods, create the menu
     704        academic_tutor_create_demo_menu();
     705        wp_send_json_success(array(
     706                'msg' => 'Theme mods imported successfully.',
     707                'redirect' => home_url()
     708        ));
     709    } else {
     710        wp_send_json_error('Failed to import theme mods.');
     711    }
     712
     713    wp_die();
     714}
     715
     716// Function to set theme mods
     717function academic_tutor_demo_theme_importer($import_data) {
     718    if (is_array($import_data)) {
     719        foreach ($import_data as $mod_name => $mod_value) {
     720            set_theme_mod($mod_name, $mod_value);
     721        }
     722        return true;
     723    } else {
     724        return false;
     725    }
     726}
     727
     728// Function to create demo menu
     729function academic_tutor_create_demo_menu() {
     730
     731         // Define menu with page hierarchy
     732            $menu_structure = [
     733                [
     734                    'title' => 'Home',
     735                    'slug'  => 'home',
     736                    'template' => 'page-template/home-template.php',
     737                ],
     738                [
     739                    'title' => 'About',
     740                    'slug'  => 'about',
     741                ],
     742                [
     743                    'title' => 'Services',
     744                    'slug'  => 'services',
     745                    'children' => [
     746                        ['title' => 'Web Design', 'slug' => 'web-design'],
     747                        ['title' => 'Marketing', 'slug' => 'marketing'],
     748                    ]
     749                ],
     750                [
     751                    'title' => 'Blog',
     752                    'slug'  => 'blog',
     753                ],
     754                [
     755                    'title' => 'Contact',
     756                    'slug'  => 'contact',
     757                ],
     758            ];
     759
     760            $created_pages = [];
     761
     762            // Create menus if not exist
     763            $menu_name = 'Primary Menu';
     764            $location  = 'primary';
     765            $menu = wp_get_nav_menu_object($menu_name);
     766
     767            if (!$menu) {
     768                $menu_id = wp_create_nav_menu($menu_name);
     769            } else {
     770                $menu_id = $menu->term_id;
     771            }
     772
     773            // Recursive function to create pages + menu items
     774            $create_page_and_menu = function($item, $parent_menu_id = 0, $parent_page_id = 0) use (&$create_page_and_menu, &$created_pages, $menu_id) {
     775
     776                // Create page if not exists
     777                $page = get_page_by_title($item['title']);
     778                if (!$page) {
     779                    $page_id = wp_insert_post([
     780                        'post_title'   => $item['title'],
     781                        'post_type'    => 'page',
     782                        'post_status'  => 'publish',
     783                        'post_name'    => $item['slug'],
     784                        'post_parent'  => $parent_page_id,
     785                    ]);
     786
     787                    if (!empty($item['template'])) {
     788                        update_post_meta($page_id, '_wp_page_template', $item['template']);
     789                    }
     790                } else {
     791                    $page_id = $page->ID;
     792                }
     793
     794                $created_pages[$item['title']] = $page_id;
     795
     796                // Add to menu
     797                $menu_item_id = wp_update_nav_menu_item($menu_id, 0, [
     798                    'menu-item-title'     => $item['title'],
     799                    'menu-item-object'    => 'page',
     800                    'menu-item-object-id' => $page_id,
     801                    'menu-item-type'      => 'post_type',
     802                    'menu-item-parent-id' => $parent_menu_id,
     803                    'menu-item-status'    => 'publish'
     804                ]);
     805
     806                // If has children → repeat
     807                if (!empty($item['children'])) {
     808                    foreach ($item['children'] as $child) {
     809                        $create_page_and_menu($child, $menu_item_id, $page_id);
     810                    }
     811                }
     812            };
     813
     814            // Loop through menu structure to generate everything
     815            foreach ($menu_structure as $item) {
     816                $create_page_and_menu($item);
     817            }
     818
     819            // Set homepage
     820            if (!empty($created_pages['Home'])) {
     821                update_option('page_on_front', $created_pages['Home']);
     822                update_option('show_on_front', 'page');
     823            }
     824
     825            // Set blog page
     826            if (!empty($created_pages['Blog'])) {
     827                update_option('page_for_posts', $created_pages['Blog']);
     828            }
     829
     830            // Assign menu to theme location
     831            $locations = get_theme_mod('nav_menu_locations');
     832            $locations[$location] = $menu_id;
     833            set_theme_mod('nav_menu_locations', $locations);
     834
     835    //Top Header
     836    set_theme_mod( 'academic_tutor_header_search_setting', true );
     837    set_theme_mod( 'academic_tutor_header_btn_text', 'Login' );
     838    set_theme_mod( 'academic_tutor_header_btn_url', '#' );
     839
     840    //Banner
     841    set_theme_mod( 'academic_tutor_banner_section_setting', true );
     842    set_theme_mod( 'academic_tutor_banner_extra_heading', 'WELCOME TO EDUCATION PLACE' );
     843    set_theme_mod( 'academic_tutor_banner_heading', 'Build The Skills To Drive Your Career' );
     844    set_theme_mod( 'academic_tutor_banner_content', 'It Is A Long Established Fact That A Reader Will Be Distracted By The Readable Content Of A Page When Looking At Its Layout.' );
     845    set_theme_mod( 'academic_tutor_banner_btn_text', 'Start Learning Now' );
     846    set_theme_mod( 'academic_tutor_banner_btn_url', '#' );
     847
     848
     849    set_theme_mod( 'academic_tutor_banner_review_head', '12 M+' );
     850    set_theme_mod( 'academic_tutor_banner_review_text', 'Clients Review' );
     851
     852    set_theme_mod( 'academic_tutor_banner_class_count', '2K+' );
     853    set_theme_mod( 'academic_tutor_banner_class_text', 'Active Classes' );
     854
     855    set_theme_mod( 'academic_tutor_banner_admission_count', '20%' );
     856    set_theme_mod( 'academic_tutor_banner_admission_text', 'In Admission Free' );
     857
     858    set_theme_mod( 'academic_tutor_banner_review_img1', get_template_directory_uri().'/assets/img/review-img1.png' );
     859    set_theme_mod( 'academic_tutor_banner_review_img2', get_template_directory_uri().'/assets/img/review-img2.png' );
     860    set_theme_mod( 'academic_tutor_banner_review_img3', get_template_directory_uri().'/assets/img/review-img3.png' );
     861    set_theme_mod( 'academic_tutor_banner_review_img4', get_template_directory_uri().'/assets/img/review-img4.png' );
     862
     863    // Service
     864    set_theme_mod( 'academic_tutor_service_section_setting', true );
     865
     866    set_theme_mod( 'academic_tutor_banner_courses_count', '10%' );
     867    set_theme_mod( 'academic_tutor_banner_courses_text', 'Certified Courses' );
     868
     869    set_theme_mod( 'academic_tutor_banner_about_img1', get_template_directory_uri().'/assets/img/about1.png' );
     870    set_theme_mod( 'academic_tutor_banner_about_img2', get_template_directory_uri().'/assets/img/about2.png' );
     871    set_theme_mod( 'academic_tutor_banner_about_img3', get_template_directory_uri().'/assets/img/about3.png' );
     872    set_theme_mod( 'academic_tutor_banner_about_img4', get_template_directory_uri().'/assets/img/about4.png' );
     873
     874    set_theme_mod( 'academic_tutor_banner_experience_count', '20+' );
     875    set_theme_mod( 'academic_tutor_banner_experience_text', 'Year Of Experience' );
     876
     877    set_theme_mod( 'academic_tutor_service_short_heading', 'About Us' );
     878    set_theme_mod( 'academic_tutor_service_heading', 'Inspiring Todays Student To Succeed In Tomorrows World' );
     879
     880    set_theme_mod( 'academic_tutor_about_content', 'Lorem Ipsum is Simply Dummy Text Of The Printing And Typesetting Industry. Lorem Ipsum Has Been The Industry is Standard Dummy Text Ever Since The 1500s, When An Unknown Printer Took A Galley Of Type And Scrambled It To Make A Type Book.' );
     881
     882
     883        // Set total number of service points
     884        set_theme_mod( 'academic_tutor_service_number', 5 );
     885
     886        // Array of 5 different demo sentences
     887        $academic_tutor_demo_points = array(
     888            'Get Access To 4,000+ Of Our Top Courses',
     889            'Popular Topics To Learn Now.',
     890            'Find The Right Instructor For You.',
     891            'Multiple Course Participation.',
     892            'Vert Fast & So Easy To Create',
     893        );
     894
     895        // Loop through array and save theme mods
     896        for ( $i = 1; $i <= 5; $i++ ) {
     897            set_theme_mod(
     898                'academic_tutor_about_points' . $i,
     899                $academic_tutor_demo_points[ $i - 1 ]
     900            );
     901        }
     902
     903    set_theme_mod( 'academic_tutor_about_admin_img', get_template_directory_uri().'/assets/img/adminn.png' );
     904    set_theme_mod( 'academic_tutor_banner_admin_count', 'Gloria Rose' );
     905    set_theme_mod( 'academic_tutor_banner_admin_text', 'Best Teacher' );
     906
     907    set_theme_mod( 'academic_tutor_about_cursive_text', 'Gloria Rose' );
     908
     909    set_theme_mod( 'academic_tutor_banner_about_btn_text', 'More About Us' );
     910        set_theme_mod( 'academic_tutor_about_btn_url', '#' );
     911   
     912}
     913// Enqueue necessary scripts
     914add_action('admin_enqueue_scripts', 'academic_tutor_demo_importer_enqueue_scripts');
     915
     916function academic_tutor_demo_importer_enqueue_scripts() {
     917    wp_enqueue_script(
     918        'demo-theme-importer',
     919        get_template_directory_uri() . '/assets/js/theme-importer.js', // Path to your JS file
     920        array('jquery'),
     921        null,
     922        true
     923    );
     924
     925    wp_enqueue_style('demo-importer-style', get_template_directory_uri() . '/assets/css/importer.css', array(), '');
     926
     927    // Localize script to pass AJAX URL to JS
     928    wp_localize_script(
     929        'demo-theme-importer',
     930        'demoImporter',
     931        array(
     932            'ajax_url' => admin_url('admin-ajax.php'),
     933            'nonce'    => wp_create_nonce('theme_importer_nonce')
     934        )
     935    );
     936}
     937
     938/**
     939 * Theme Info.
     940 */
     941function Academic_Tutor_Theme_Info_load() {
     942        require get_theme_file_path( '/inc/theme-installation/theme-installation.php' );
     943}
     944add_action( 'init', 'Academic_Tutor_Theme_Info_load' );
     945
     946// Getstart Function
     947
     948
     949function free_mnssp_get_filtered_products($cursor = '', $search = '', $collection = 'pro') {
     950    $endpoint_url = FREE_MNSSP_API_URL . 'getFilteredProducts';
     951
     952    $remote_post_data = array(
     953        'collectionHandle' => $collection,
     954        'productHandle' => $search,
     955        'paginationParams' => array(
     956            "first" => 12,
     957            "afterCursor" => $cursor,
     958            "beforeCursor" => "",
     959            "reverse" => true
     960        )
     961    );
     962
     963    $body = wp_json_encode($remote_post_data);
     964
     965    $options = [
     966        'body' => $body,
     967        'headers' => [
     968            'Content-Type' => 'application/json'
     969        ]
     970    ];
     971    $response = wp_remote_post($endpoint_url, $options);
     972
     973    if (!is_wp_error($response)) {
     974        $response_body = wp_remote_retrieve_body($response);
     975        $response_body = json_decode($response_body);
     976
     977        if (isset($response_body->data) && !empty($response_body->data)) {
     978            if (isset($response_body->data->products) && !empty($response_body->data->products)) {
     979                return  array(
     980                    'products' => $response_body->data->products,
     981                    'pagination' => $response_body->data->pageInfo
     982                );
     983            }
     984        }
     985        return [];
     986    }
     987   
     988    return [];
     989}
     990
     991function free_mnssp_get_filtered_products_ajax() {
     992    $cursor = isset($_POST['cursor']) ? sanitize_text_field(wp_unslash($_POST['cursor'])) : '';
     993    $search = isset($_POST['search']) ? sanitize_text_field(wp_unslash($_POST['search'])) : '';
     994    $collection = isset($_POST['collection']) ? sanitize_text_field(wp_unslash($_POST['collection'])) : 'pro';
     995
     996    check_ajax_referer('free_mnssp_create_pagination_nonce_action', 'mnssp_pagination_nonce');
     997
     998    $get_filtered_products = free_mnssp_get_filtered_products($cursor, $search, $collection);
     999    ob_start();
     1000    if (isset($get_filtered_products['products']) && !empty($get_filtered_products['products'])) {
     1001        foreach ( $get_filtered_products['products'] as $product ) {
     1002
     1003            $product_obj = $product->node;
     1004           
     1005            if (isset($product_obj->inCollection) && !$product_obj->inCollection) {
     1006                continue;
     1007            }
     1008
     1009            $product_obj = $product->node;
     1010
     1011            $demo_url = isset($product->node->metafield->value) ? $product->node->metafield->value : '';
     1012            $product_url = isset($product->node->onlineStoreUrl) ? $product->node->onlineStoreUrl : '';
     1013            $image_src = isset($product->node->images->edges[0]->node->src) ? $product->node->images->edges[0]->node->src : '';
     1014            $price = isset($product->node->variants->edges[0]->node->price) ? '$' . $product->node->variants->edges[0]->node->price : ''; ?>
     1015
     1016            <div class="mnssp-grid-item">
     1017                <div class="mnssp-image-wrap">
     1018                    <img src="<?php echo esc_url($image_src); ?>" alt="<?php echo esc_attr($product_obj->title); ?>">
     1019                    <div class="mnssp-image-overlay">
     1020                        <a class="mnssp-demo-url mnssp-btn" href="<?php echo esc_attr($demo_url); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html('Demo'); ?></a>
     1021                        <a class="mnssp-buy-now mnssp-btn" href="<?php echo esc_attr($product_url); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html('Buy Now'); ?></a>
     1022                    </div>
     1023                </div>
     1024                <footer>
     1025                    <h3><?php echo esc_html($product_obj->title); ?></h3>
     1026                </footer>
     1027                <div class="mnssp-grid-item-price">Price: <?php echo esc_html($price); ?></div>
     1028            </div>
     1029        <?php }
     1030    }
     1031    $output = ob_get_clean();
     1032
     1033    $pagination = isset($get_filtered_products['pagination']) ?  $get_filtered_products['pagination'] : [];
     1034    wp_send_json(array(
     1035        'content' => $output,
     1036        'pagination' => $pagination
     1037    ));
     1038}
     1039
     1040add_action('wp_ajax_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax');
     1041add_action('wp_ajax_nopriv_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax');
     1042
     1043function free_mnssp_get_collections() {
     1044   
     1045    $endpoint_url = FREE_MNSSP_API_URL . 'getCollections';
     1046
     1047    $options = [
     1048        'body' => [],
     1049        'headers' => [
     1050            'Content-Type' => 'application/json'
     1051        ]
     1052    ];
     1053    $response = wp_remote_post($endpoint_url, $options);
     1054
     1055    if (!is_wp_error($response)) {
     1056        $response_body = wp_remote_retrieve_body($response);
     1057        $response_body = json_decode($response_body);
     1058
     1059        if (isset($response_body->data) && !empty($response_body->data)) {
     1060           return  $response_body->data;
     1061        }
     1062        return  [];
     1063    }
     1064
     1065    return  [];
     1066}
  • academic-tutor/0.0.2/readme.txt

    r302519 r305342  
    44Tested up to: 6.9
    55Requires PHP: 7.2
    6 Stable tag: 0.0.1
     6Stable tag: 0.0.2
    77License: GNU General Public License v3.0
    88License URI: http://www.gnu.org/licenses/gpl-3.0.html
    … …  
    111111
    112112* Initial release.
     113
     114= 0.0.2
     115
     116* Added getstart.
     117* Updated footer link.
     118* Added demo importer.
  • academic-tutor/0.0.2/style.css

    r302519 r305342  
    66Author URI: https://www.themagnifico.net/
    77Description: The Academic Tutor delivers a multipurpose, modern, and elegant design that helps educators, institutes, Online Learning, LMS Platform, Learning Portal, Digital Learning, Remote Learning, Virtual Learning, Online Courses, Course Platform, Training Platform and coaching centers build a beautiful and professional online presence. Its minimal yet sophisticated layout ensures that your content stands out clearly, supported by clean, optimized, and secure code that guarantees faster page load time and exceptional performance. The theme remains fully responsive, retina- ready, and mobile-friendly so users enjoy a seamless learning experience across all devices. Built on Bootstrap, it includes interactive and animated elements that keep visitors engaged while maintaining a user-friendly interface. You can enhance branding effortlessly with wide personalization options, intuitive customization options, and styling flexibility to match your academic or agency-friendly requirements. Showcase your expertise with a powerful banner, compelling Call to Action (CTA) buttons, and a well- designed testimonial section that builds trust instantly. The dedicated Team section allows you to introduce instructors or staff members in a clear, visually appealing format. With support for shortcodes, you can add advanced features without any coding knowledge, making the theme ideal for both beginners and developers. The Academic Tutor integrates social media options to boost engagement and help you reach more learners. Its translation-ready structure ensures that your website supports multiple languages, making it suitable for global audiences. Whether you want to promote online courses, private tutoring, or educational programs, this luxurious, stunning, and interactive theme adapts smoothly to every need. With its polished appearance, smooth navigation, and flexible functionality, the Academic Tutor empowers educators to create a powerful digital platform that inspires confidence and enhances learning.
    8 Version: 0.0.1
     8Version: 0.0.2
    99Requires at least: 5.0
    1010Tested up to: 6.9
Note: See TracChangeset for help on using the changeset viewer.