set_vars( $config ); $this->init(); } /** * Set some settings * @since 1.0.0 * @param $config Our config parameters */ public function set_vars( $config ) { // require_once trailingslashit( WHIZZIE_DIR ) . 'tgm/class-tgm-plugin-activation.php'; require_once trailingslashit( WHIZZIE_DIR ) . 'tgm/tgm.php'; if( isset( $config['page_slug'] ) ) { $this->page_slug = esc_attr( $config['page_slug'] ); } if( isset( $config['page_title'] ) ) { $this->page_title = esc_attr( $config['page_title'] ); } if( isset( $config['steps'] ) ) { $this->config_steps = $config['steps']; } $this->plugin_path = trailingslashit( dirname( __FILE__ ) ); $relative_url = str_replace( get_template_directory(), '', $this->plugin_path ); $this->plugin_url = trailingslashit( get_template_directory_uri() . $relative_url ); $current_theme = wp_get_theme(); $this->theme_title = $current_theme->get( 'Name' ); $this->theme_name = strtolower( preg_replace( '#[^a-zA-Z]#', '', $current_theme->get( 'Name' ) ) ); $this->page_slug = apply_filters( $this->theme_name . '_theme_setup_wizard_page_slug', $this->theme_name . '-wizard' ); $this->parent_slug = apply_filters( $this->theme_name . '_theme_setup_wizard_parent_slug', '' ); } /** * Hooks and filters * @since 1.0.0 */ public function init() { add_action( 'after_switch_theme', array( $this, 'redirect_to_wizard' ) ); if ( class_exists( 'TGM_Plugin_Activation' ) && isset( $GLOBALS['tgmpa'] ) ) { add_action( 'init', array( $this, 'get_tgmpa_instance' ), 30 ); add_action( 'init', array( $this, 'set_tgmpa_url' ), 40 ); } add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'admin_menu', array( $this, 'menu_page' ) ); add_action( 'admin_init', array( $this, 'get_plugins' ), 30 ); add_filter( 'tgmpa_load', array( $this, 'tgmpa_load' ), 10, 1 ); add_action( 'wp_ajax_setup_plugins', array( $this, 'setup_plugins' ) ); add_action( 'wp_ajax_setup_widgets', array( $this, 'setup_widgets' ) ); } public function redirect_to_wizard() { global $pagenow; if( is_admin() && 'themes.php' == $pagenow && isset( $_GET['activated'] ) && current_user_can( 'manage_options' ) ) { wp_redirect( admin_url( 'themes.php?page=' . esc_attr( $this->page_slug ) ) ); } } public function enqueue_scripts() { wp_enqueue_style( 'theme-wizard-style', get_template_directory_uri() . '/theme-wizard/assets/css/theme-wizard-style.css'); wp_register_script( 'theme-wizard-script', get_template_directory_uri() . '/theme-wizard/assets/js/theme-wizard-script.js', array( 'jquery' ), ); wp_localize_script( 'theme-wizard-script', 'aster_startup_whizzie_params', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'verify_text' => esc_html( 'verifying', 'aster-startup' ) ) ); wp_enqueue_script( 'theme-wizard-script' ); } public static function get_instance() { if ( ! self::$instance ) { self::$instance = new self; } return self::$instance; } public function tgmpa_load( $status ) { return is_admin() || current_user_can( 'install_themes' ); } /** * Get configured TGMPA instance * * @access public * @since 1.1.2*/ public function get_tgmpa_instance() { $this->tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); } /** * Update $tgmpa_menu_slug and $tgmpa_parent_slug from TGMPA instance * * @access public * @since 1.1.2 */ public function set_tgmpa_url() { $this->tgmpa_menu_slug = ( property_exists( $this->tgmpa_instance, 'menu' ) ) ? $this->tgmpa_instance->menu : $this->tgmpa_menu_slug; $this->tgmpa_menu_slug = apply_filters( $this->theme_name . '_theme_setup_wizard_tgmpa_menu_slug', $this->tgmpa_menu_slug ); $tgmpa_parent_slug = ( property_exists( $this->tgmpa_instance, 'parent_slug' ) && $this->tgmpa_instance->parent_slug !== 'themes.php' ) ? 'admin.php' : 'themes.php'; $this->tgmpa_url = apply_filters( $this->theme_name . '_theme_setup_wizard_tgmpa_url', $tgmpa_parent_slug . '?page=' . $this->tgmpa_menu_slug ); } /*** Make a modal screen for the wizard ***/ public function menu_page() { add_theme_page( esc_html( $this->page_title ), esc_html( $this->page_title ), 'manage_options', $this->page_slug, array( $this, 'aster_startup_setup_wizard' ) ); } /*** Make an interface for the wizard ***/ public function wizard_page() { tgmpa_load_bulk_installer(); // install plugins with TGM. if ( ! class_exists( 'TGM_Plugin_Activation' ) || ! isset( $GLOBALS['tgmpa'] ) ) { die( 'Failed to find TGM' ); } $url = wp_nonce_url( add_query_arg( array( 'plugins' => 'go' ) ), 'whizzie-setup' ); // copied from TGM $method = ''; // Leave blank so WP_Filesystem can populate it as necessary. $fields = array_keys( $_POST ); // Extra fields to pass to WP_Filesystem. if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) { return true; // Stop the normal page form from displaying, credential request form will be shown. } // Now we have some credentials, setup WP_Filesystem. if ( ! WP_Filesystem( $creds ) ) { // Our credentials were no good, ask the user for them again. request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields ); return true; } /* If we arrive here, we have the filesystem */ ?>
'; // The wizard is a list with only one item visible at a time $steps = $this->get_steps(); echo ''; ?>

site_url(), 'theme_text_domain' => wp_get_theme()->get( 'TextDomain' ) ]; $body = wp_json_encode( $body ); $options = [ 'body' => $body, 'sslverify' => false, 'headers' => [ 'Content-Type' => 'application/json', ] ]; //custom function about theme customizer $return = add_query_arg( array()) ; $theme = wp_get_theme( 'aster-startup' ); ?>
wizard_page(); ?>
config_steps; $steps = array( 'intro' => array( 'id' => 'intro', 'title' => __( 'Welcome to ', 'aster-startup' ) . $this->theme_title, 'icon' => 'dashboard', 'view' => 'get_step_intro', // Callback for content 'callback' => 'do_next_step', // Callback for JS 'button_text' => __( 'Start Now', 'aster-startup' ), 'can_skip' => false // Show a skip button? ), 'plugins' => array( 'id' => 'plugins', 'title' => __( 'Plugins', 'aster-startup' ), 'icon' => 'admin-plugins', 'view' => 'get_step_plugins', 'callback' => 'install_plugins', 'button_text' => __( 'Install Plugins', 'aster-startup' ), 'can_skip' => true ), 'widgets' => array( 'id' => 'widgets', 'title' => __( 'Demo Importer', 'aster-startup' ), 'icon' => 'welcome-widgets-menus', 'view' => 'get_step_widgets', 'callback' => 'install_widgets', 'button_text' => __( 'Import Demo', 'aster-startup' ), 'can_skip' => true ), 'done' => array( 'id' => 'done', 'title' => __( 'All Done', 'aster-startup' ), 'icon' => 'yes', 'view' => 'get_step_done', 'callback' => '' ) ); // Iterate through each step and replace with dev config values if( $dev_steps ) { // Configurable elements - these are the only ones the dev can update from config.php $can_config = array( 'title', 'icon', 'button_text', 'can_skip' ); foreach( $dev_steps as $dev_step ) { // We can only proceed if an ID exists and matches one of our IDs if( isset( $dev_step['id'] ) ) { $id = $dev_step['id']; if( isset( $steps[$id] ) ) { foreach( $can_config as $element ) { if( isset( $dev_step[$element] ) ) { $steps[$id][$element] = $dev_step[$element]; } } } } } } return $steps; } /*** Display the content for the intro step ***/ public function get_step_intro() { ?>

get_plugins(); $content = array(); ?>

'; // Add each plugin into a list foreach( $plugins['all'] as $slug=>$plugin ) { $content['detail'] .= '
  • ' . esc_html( $plugin['name'] ) . ''; $keys = array(); if ( isset( $plugins['install'][ $slug ] ) ) { $keys[] = 'Installation'; } if ( isset( $plugins['update'][ $slug ] ) ) { $keys[] = 'Update'; } if ( isset( $plugins['activate'][ $slug ] ) ) { $keys[] = 'Activation'; } $content['detail'] .= implode( ' and ', $keys ) . ' required'; $content['detail'] .= '
  • '; } $content['detail'] .= ''; return $content; } /*** Display the content for the widgets step ***/ public function get_step_widgets() { ?>

    1. > Pages >> Add New','aster-startup'); ?>

    1. > Appearance >> Menu','aster-startup'); ?>

    1. > Appearance >> Widgets','aster-startup'); ?>
    array(), 'install' => array(), 'update' => array(), 'activate' => array() ); foreach( $instance->plugins as $slug=>$plugin ) { if( $instance->is_plugin_active( $slug ) && false === $instance->does_plugin_have_update( $slug ) ) { // Plugin is installed and up to date continue; } else { $plugins['all'][$slug] = $plugin; if( ! $instance->is_plugin_installed( $slug ) ) { $plugins['install'][$slug] = $plugin; } else { if( false !== $instance->does_plugin_have_update( $slug ) ) { $plugins['update'][$slug] = $plugin; } if( $instance->can_plugin_activate( $slug ) ) { $plugins['activate'][$slug] = $plugin; } } } } return $plugins; } public function setup_plugins() { $json = array(); // send back some json we use to hit up TGM $plugins = $this->get_plugins(); // what are we doing with this plugin? foreach ( $plugins['activate'] as $slug => $plugin ) { if ( $_POST['slug'] == $slug ) { $json = array( 'url' => admin_url( $this->tgmpa_url ), 'plugin' => array( $slug ), 'tgmpa-page' => $this->tgmpa_menu_slug, 'plugin_status' => 'all', '_wpnonce' => wp_create_nonce( 'bulk-plugins' ), 'action' => 'tgmpa-bulk-activate', 'action2' => - 1, 'message' => esc_html__( 'Activating Plugin','aster-startup' ), ); break; } } foreach ( $plugins['update'] as $slug => $plugin ) { if ( $_POST['slug'] == $slug ) { $json = array( 'url' => admin_url( $this->tgmpa_url ), 'plugin' => array( $slug ), 'tgmpa-page' => $this->tgmpa_menu_slug, 'plugin_status' => 'all', '_wpnonce' => wp_create_nonce( 'bulk-plugins' ), 'action' => 'tgmpa-bulk-update', 'action2' => - 1, 'message' => esc_html__( 'Updating Plugin','aster-startup' ), ); break; } } foreach ( $plugins['install'] as $slug => $plugin ) { if ( $_POST['slug'] == $slug ) { $json = array( 'url' => admin_url( $this->tgmpa_url ), 'plugin' => array( $slug ), 'tgmpa-page' => $this->tgmpa_menu_slug, 'plugin_status' => 'all', '_wpnonce' => wp_create_nonce( 'bulk-plugins' ), 'action' => 'tgmpa-bulk-install', 'action2' => - 1, 'message' => esc_html__( 'Installing Plugin','aster-startup' ), ); break; } } if ( $json ) { $json['hash'] = md5( serialize( $json ) ); // used for checking if duplicates happen, move to next plugin wp_send_json( $json ); } else { wp_send_json( array( 'done' => 1, 'message' => esc_html__( 'Success','aster-startup' ) ) ); } exit; } /***------------------------------------------------- Imports the Demo Content* @since 1.1.0 ----------------------------------------------****/ // ------------- MENUS ----------------- // public function aster_startup_customizer_primary_menu(){ // ------- Create Primary Menu -------- $aster_startup_menuname = $aster_startup_themename . 'Main Menu'; $aster_startup_bpmenulocation = 'primary'; $aster_startup_menu_exists = wp_get_nav_menu_object( $aster_startup_menuname ); if( !$aster_startup_menu_exists){ $aster_startup_menu_id = wp_create_nav_menu($aster_startup_menuname); $aster_startup_parent_item = wp_update_nav_menu_item($aster_startup_menu_id, 0, array( 'menu-item-title' => __('HOME','aster-startup'), 'menu-item-classes' => 'home', 'menu-item-url' => home_url( '/' ), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($aster_startup_menu_id, 0, array( 'menu-item-title' => __('PAGES','aster-startup'), 'menu-item-classes' => 'pages', 'menu-item-url' => get_permalink(get_page_by_title('PAGES')), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($aster_startup_menu_id, 0, array( 'menu-item-title' => __('PORTFOLIO','aster-startup'), 'menu-item-classes' => 'portfolio', 'menu-item-url' => get_permalink(get_page_by_title('PORTFOLIO')), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($aster_startup_menu_id, 0, array( 'menu-item-title' => __('BLOGS', 'aster-startup'), 'menu-item-classes' => 'blog', 'menu-item-url' => get_permalink(get_page_by_title('BLOGS')), 'menu-item-status' => 'publish' )); wp_update_nav_menu_item($aster_startup_menu_id, 0, array( 'menu-item-title' => __('CONTACT US', 'aster-startup'), 'menu-item-classes' => 'contact', 'menu-item-url' => get_permalink(get_page_by_title('CONTACT US')), 'menu-item-status' => 'publish' )); if( !has_nav_menu( $aster_startup_bpmenulocation ) ){ $locations = get_theme_mod('nav_menu_locations'); $locations[$aster_startup_bpmenulocation] = $aster_startup_menu_id; set_theme_mod( 'nav_menu_locations', $locations ); } } } public function setup_widgets() { // Create a front page and assigned the template $aster_startup_home_title = 'HOME'; $aster_startup_home_check = get_page_by_title($aster_startup_home_title); $aster_startup_home = array( 'post_type' => 'page', 'post_title' => $aster_startup_home_title, 'post_status' => 'publish', 'post_author' => 1, 'post_slug' => 'home' ); $aster_startup_home_id = wp_insert_post($aster_startup_home); //Set the static front page $aster_startup_home = get_page_by_title( 'HOME' ); update_option( 'page_on_front', $aster_startup_home->ID ); update_option( 'show_on_front', 'page' ); // Create a posts page and assigned the template $aster_startup_blog_title = 'SHOP'; $aster_startup_blog = get_page_by_title($aster_startup_blog_title); if (!$aster_startup_blog) { $aster_startup_blog = array( 'post_type' => 'page', 'post_title' => $aster_startup_blog_title, 'post_status' => 'publish', 'post_author' => 1, 'post_name' => 'blog' ); $aster_startup_blog_id = wp_insert_post($aster_startup_blog); if (is_wp_error($aster_startup_blog_id)) { // Handle error } } else { $aster_startup_blog_id = $aster_startup_blog->ID; } // Set the posts page update_option('page_for_posts', $aster_startup_blog_id); // Create a posts page and assigned the template $aster_startup_blog_title = 'PAGES'; $aster_startup_blog = get_page_by_title($aster_startup_blog_title); if (!$aster_startup_blog) { $aster_startup_blog = array( 'post_type' => 'page', 'post_title' => $aster_startup_blog_title, 'post_status' => 'publish', 'post_author' => 1, 'post_name' => 'blog' ); $aster_startup_blog_id = wp_insert_post($aster_startup_blog); if (is_wp_error($aster_startup_blog_id)) { // Handle error } } else { $aster_startup_blog_id = $aster_startup_blog->ID; } // Set the posts page update_option('page_for_posts', $aster_startup_blog_id); // Create a Women and assigned the template $aster_startup_gallery_title = 'CONTACT'; $aster_startup_gallery_check = get_page_by_title($aster_startup_gallery_title); $aster_startup_gallery = array( 'post_type' => 'page', 'post_title' => $aster_startup_gallery_title, 'post_status' => 'publish', 'post_author' => 1, 'post_slug' => 'blog' ); $aster_startup_gallery_id = wp_insert_post($aster_startup_gallery); // Create a Contact and assigned the template $aster_startup_contact_title = 'BLOG'; $aster_startup_contact_check = get_page_by_title($aster_startup_contact_title); $aster_startup_contact = array( 'post_type' => 'page', 'post_title' => $aster_startup_contact_title, 'post_status' => 'publish', 'post_author' => 1, 'post_slug' => 'blog' ); $aster_startup_contact_id = wp_insert_post($aster_startup_contact); // ------------------------------------------ Header Section -------------------------------------- set_theme_mod( 'aster_startup_phone_topbar_number', '+1 123 456 7890'); // ---------------------------------------- Slider --------------------------------------------------- // // Create categories if not already created $aster_startup_category_slider = wp_create_category('Slider'); // Array of categories to assign to each set of posts $aster_startup_categories = array($aster_startup_category_slider); // Loop to create posts for ($i = 1; $i <= 3; $i++) { set_theme_mod('aster_startup_banner_button_label_'.$i,'Read More'); $title = array( 'Empowering Your Business with Seamless IT Solutions', 'Enhancing Your Business with Effortless IT Solutions', 'Elevating Your Business with Streamlined IT Solutions', ); // Determine category and post index to use for title $category_index = ($i <= 3) ? 0 : 1; // First 3 for Slider, next 3 for Blog $post_title = $title[$i - 1]; // Adjust for zero-based index in title array // Create post object $my_post = array( 'post_title' => wp_strip_all_tags($post_title), 'post_content' => 'Lorem IpsumĀ is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s ', 'post_status' => 'publish', 'post_type' => 'post', 'post_category' => array($aster_startup_categories[$category_index]), // Assign Slider to first 3, Blog to next 3 ); // Insert the post into the database $post_id = wp_insert_post($my_post); set_theme_mod('aster_startup_banner_slider_content_post_'.$i, $post_id); // Determine the category and set image URLs based on category if ($category_index === 0) { // Slider category $aster_startup_image_name = "slider-" . $i . ".jpg"; $aster_startup_image_url = get_template_directory_uri() . '/resource/img/' . $aster_startup_image_name; } $aster_startup_upload_dir = wp_upload_dir(); $aster_startup_image_data = file_get_contents($aster_startup_image_url); $aster_startup_unique_file_name = wp_unique_filename($aster_startup_upload_dir['path'], $aster_startup_image_name); $filename = basename($aster_startup_unique_file_name); if (wp_mkdir_p($aster_startup_upload_dir['path'])) { $file = $aster_startup_upload_dir['path'] . '/' . $filename; } else { $file = $aster_startup_upload_dir['basedir'] . '/' . $filename; } if ( ! function_exists( 'WP_Filesystem' ) ) { require_once( ABSPATH . 'wp-admin/includes/file.php' ); } WP_Filesystem(); global $wp_filesystem; if ( ! $wp_filesystem->put_contents( $file, $aster_startup_image_data, FS_CHMOD_FILE ) ) { wp_die( 'Error saving file!' ); } $wp_filetype = wp_check_filetype($filename, null); $attachment = array( 'post_mime_type' => $wp_filetype['type'], 'post_title' => sanitize_file_name($filename), 'post_content' => '', 'post_status' => 'inherit' ); $aster_startup_attach_id = wp_insert_attachment($attachment, $file, $post_id); require_once(ABSPATH . 'wp-admin/includes/image.php'); $aster_startup_attach_data = wp_generate_attachment_metadata($aster_startup_attach_id, $file); wp_update_attachment_metadata($aster_startup_attach_id, $aster_startup_attach_data); set_post_thumbnail($post_id, $aster_startup_attach_id); } // ---------------------------------------- Services --------------------------------------------------- // set_theme_mod('aster_startup_services_short_heading','Our Services'); set_theme_mod('aster_startup_services_heading','Best Solutions For All'); set_theme_mod('aster_startup_trending_post_category','services'); // Create categories if not already created $aster_startup_category_services = wp_create_category('Services'); // Array of categories to assign to each set of posts $aster_startup_categories = array($aster_startup_category_services); // Loop to create posts for ($i = 1; $i <= 3; $i++) { $title = array( 'Managed IT Services', 'Cyber Security Solutions', 'Cloud Solutions & Migration', ); // Determine category and post index to use for title $category_index = ($i <= 3) ? 0 : 1; // First 3 for Slider, next 3 for Blog $post_title = $title[$i - 1]; // Adjust for zero-based index in title array // Create post object $my_post = array( 'post_title' => wp_strip_all_tags($post_title), 'post_content' => 'Proactively envisioned multimedia based expertise and cross-media growth strategies. Seamlessly visualize quality intellectual.', 'post_status' => 'publish', 'post_type' => 'post', 'post_category' => array($aster_startup_categories[$category_index]), // Assign Slider to first 3, Blog to next 3 ); // Insert the post into the database $post_id = wp_insert_post($my_post); // Determine the category and set image URLs based on category if ($category_index === 0) { // Slider category $aster_startup_image_name = "services-" . $i . ".png"; $aster_startup_image_url = get_template_directory_uri() . '/resource/img/' . $aster_startup_image_name; } $aster_startup_upload_dir = wp_upload_dir(); $aster_startup_image_data = file_get_contents($aster_startup_image_url); $aster_startup_unique_file_name = wp_unique_filename($aster_startup_upload_dir['path'], $aster_startup_image_name); $filename = basename($aster_startup_unique_file_name); if (wp_mkdir_p($aster_startup_upload_dir['path'])) { $file = $aster_startup_upload_dir['path'] . '/' . $filename; } else { $file = $aster_startup_upload_dir['basedir'] . '/' . $filename; } if ( ! function_exists( 'WP_Filesystem' ) ) { require_once( ABSPATH . 'wp-admin/includes/file.php' ); } WP_Filesystem(); global $wp_filesystem; if ( ! $wp_filesystem->put_contents( $file, $aster_startup_image_data, FS_CHMOD_FILE ) ) { wp_die( 'Error saving file!' ); } $wp_filetype = wp_check_filetype($filename, null); $attachment = array( 'post_mime_type' => $wp_filetype['type'], 'post_title' => sanitize_file_name($filename), 'post_content' => '', 'post_status' => 'inherit' ); $aster_startup_attach_id = wp_insert_attachment($attachment, $file, $post_id); require_once(ABSPATH . 'wp-admin/includes/image.php'); $aster_startup_attach_data = wp_generate_attachment_metadata($aster_startup_attach_id, $file); wp_update_attachment_metadata($aster_startup_attach_id, $aster_startup_attach_data); set_post_thumbnail($post_id, $aster_startup_attach_id); } // ---------------------------------------- Related post_tag --------------------------------------------------- // set_theme_mod('aster_startup_post_related_post_label','Related Posts'); set_theme_mod('aster_startup_related_posts_count','3'); $this->aster_startup_customizer_primary_menu(); } }