Changeset 305342
- Timestamp:
- 12/23/2025 11:09:04 AM (11 months ago)
- Location:
- academic-tutor/0.0.2
- Files:
-
- 24 added
- 4 edited
- 1 copied
-
. (copied) (copied from academic-tutor/0.0.1 )
-
assets/css/importer.css (added)
-
assets/img/about1.png (added)
-
assets/img/about2.png (added)
-
assets/img/about3.png (added)
-
assets/img/about4.png (added)
-
assets/img/adminn.png (added)
-
assets/img/bundle-img.png (added)
-
assets/img/review-img1.png (added)
-
assets/img/review-img2.png (added)
-
assets/img/review-img3.png (added)
-
assets/img/review-img4.png (added)
-
assets/js/theme-importer.js (added)
-
footer.php (modified) (1 diff)
-
functions.php (modified) (2 diffs)
-
inc/admin (added)
-
inc/admin/js (added)
-
inc/admin/js/admin-notice-script.js (added)
-
inc/theme-installation (added)
-
inc/theme-installation/assets (added)
-
inc/theme-installation/assets/css (added)
-
inc/theme-installation/assets/css/theme-installation.css (added)
-
inc/theme-installation/assets/js (added)
-
inc/theme-installation/assets/js/theme-installation.js (added)
-
inc/theme-installation/theme-installation.php (added)
-
languages (added)
-
languages/academic-tutor.pot (added)
-
readme.txt (modified) (2 diffs)
-
style.css (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
academic-tutor/0.0.2/footer.php
r302519 r305342 88 88 89 89 <span> 90 <a href="https://www.themagnifico.net/products/academic-tutor" target="_blank"> 90 91 <?php 91 92 /* 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' ); 93 94 ?> 95 </a> 94 96 <?php 95 97 /* translators: 1: Theme author. */ -
academic-tutor/0.0.2/functions.php
r302519 r305342 63 63 64 64 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' ); 65 68 } 66 69 endif; … … 519 522 520 523 add_filter( 'nav_menu_item_args', 'academic_tutor_sub_menu_toggle_button', 10, 3 ); 524 525 if ( ! 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 } 553 endif; 554 add_action( 'after_setup_theme', 'academic_tutor_file_link_setup' ); 555 556 function 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 591 function 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 618 function 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 } 633 add_action( 'admin_enqueue_scripts', 'academic_tutor_getpage_css' ); 634 635 //Admin Notice For Getstart 636 function 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 } 645 add_action( 'wp_ajax_academic_tutor_dismissed_notice_handler', 'academic_tutor_ajax_notice_handler' ); 646 647 function 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 670 add_action( 'admin_notices', 'academic_tutor_deprecated_hook_admin_notice' ); 671 672 function academic_tutor_switch_theme() { 673 delete_user_meta(get_current_user_id(), 'academic_tutor_dismissable_notice'); 674 } 675 add_action('after_switch_theme', 'academic_tutor_switch_theme'); 676 function 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 684 if (!defined('ABSPATH')) { 685 exit; 686 } 687 688 // Add the AJAX action to trigger theme mods import 689 add_action('wp_ajax_import_theme_mods', 'academic_tutor_demo_importer_ajax_handler'); 690 691 // Handle the AJAX request 692 function 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 717 function 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 729 function 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 914 add_action('admin_enqueue_scripts', 'academic_tutor_demo_importer_enqueue_scripts'); 915 916 function 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 */ 941 function Academic_Tutor_Theme_Info_load() { 942 require get_theme_file_path( '/inc/theme-installation/theme-installation.php' ); 943 } 944 add_action( 'init', 'Academic_Tutor_Theme_Info_load' ); 945 946 // Getstart Function 947 948 949 function 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 991 function 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 1040 add_action('wp_ajax_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax'); 1041 add_action('wp_ajax_nopriv_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax'); 1042 1043 function 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 4 4 Tested up to: 6.9 5 5 Requires PHP: 7.2 6 Stable tag: 0.0. 16 Stable tag: 0.0.2 7 7 License: GNU General Public License v3.0 8 8 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 111 111 112 112 * 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 6 6 Author URI: https://www.themagnifico.net/ 7 7 Description: 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. 18 Version: 0.0.2 9 9 Requires at least: 5.0 10 10 Tested up to: 6.9
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)