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' );
?>
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() { ?>
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();
}
}