plugins = apply_filters( 'alpha_plugin', array( array( 'name' => ALPHA_CORE_NAME, 'slug' => ALPHA_CORE_SLUG, 'required' => true, 'url' => ALPHA_CORE_PLUGIN_URI, 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/' . ALPHA_CORE_SLUG . '.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Kirki', 'slug' => 'kirki', 'required' => true, 'url' => 'kirki/kirki.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/kirki.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Woocommerce', 'slug' => 'woocommerce', 'required' => true, 'url' => 'woocommerce/woocommerce.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/woocommerce.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Meta-Box', 'slug' => 'meta-box', 'required' => true, 'url' => 'meta-box/meta-box.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/meta_box.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Elementor', 'slug' => 'elementor', 'required' => true, 'url' => 'elementor/elementor.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/elementor.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Advanced Custom Fields', 'slug' => 'advanced-custom-fields', 'required' => false, 'url' => 'advanced-custom-fields/acf.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/acf.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Post Types Unlimited', 'slug' => 'post-types-unlimited', 'required' => false, 'url' => 'post-types-unlimited/post-types-unlimited.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/unlimited.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'Slider Revolution', 'slug' => 'revslider', 'required' => false, 'url' => 'revslider/revslider.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/revslider.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'WPForms Lite', 'slug' => 'wpforms-lite', 'required' => false, 'url' => 'wpforms-lite/wpforms.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/wpform.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'YITH Woocommerce Wishlist', 'slug' => 'yith-woocommerce-wishlist', 'required' => false, 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/yith_wishlist.png', 'url' => 'yith-woocommerce-wishlist/init.php', 'visibility' => 'setup_wizard', ), array( 'name' => 'Contact Form 7', 'slug' => 'contact-form-7', 'required' => false, 'url' => 'contact-form-7/wp-contact-form-7.php', 'image_url' => ALPHA_ASSETS . '/images/admin/plugins/contact-form-7.png', 'visibility' => 'setup_wizard', ), array( 'name' => 'WP Super Cache', 'slug' => 'wp-super-cache', 'required' => false, 'url' => 'wp-super-cache/wp-cache.php', 'visibility' => 'optimize_wizard', 'desc' => esc_html__( 'This plugin generates static html files from your dynamic WordPress blog.', 'alpus' ), ), array( 'name' => 'Fast Velocity Minify', 'slug' => 'fast-velocity-minify', 'required' => false, 'url' => 'fast-velocity-minify/fvm.php', 'visibility' => 'optimize_wizard', 'desc' => esc_html__( 'This plugin reduces HTTP requests by merging CSS & Javascript files into groups of files, while attempting to use the least amount of files as possible.', 'alpus' ), ), ) ); /*************************/ /* TGM Plugin Activation */ /*************************/ $plugin = alpha_framework_path( ALPHA_FRAMEWORK_ADMIN . '/plugins/tgm-plugin-activation/class-tgm-plugin-activation.php' ); if ( ! class_exists( 'TGM_Plugin_Activation' ) ) { require_once $plugin; } if ( Alpha_Admin::get_instance()->is_registered() ) { add_action( 'tgmpa_register', array( $this, 'register_required_plugins' ) ); } add_filter( 'tgmpa_notice_action_links', array( $this, 'update_action_links' ), 10, 1 ); $this->plugins = $this->get_plugins_list(); } /** * Get plugins list including transient. * * @return array All plugins list. * @since 1.0 */ public function get_plugins_list() { // get transient $plugins = get_site_transient( 'alpha_plugins' ); if ( false === $plugins && Alpha_Admin::get_instance()->is_registered() ) { $plugins = $this->update_plugins_list(); } if ( ! $plugins ) { return $this->plugins; } return array_merge( $plugins, $this->plugins ); } /** * Set transient to plugins list. * * @return array Plugins list. * @since 1.0 */ private function update_plugins_list() { require_once alpha_framework_path( ALPHA_FRAMEWORK_ADMIN . '/importer/importer-api.php' ); $importer_api = new Alpha_Importer_API(); $args = $importer_api->generate_args( false ); $url = $importer_api->get_url( 'plugins_version' ); if ( isset( $args['code'] ) ) { $url = add_query_arg( 'code', $args['code'], $url ); } $url = add_query_arg( 'template', get_template(), $url ); $plugins = $importer_api->get_response( $url ); if ( ! $plugins || is_wp_error( $plugins ) ) { if ( is_wp_error( $plugins ) ) { set_transient( 'alpha_purchase_code_error_msg', $plugins->get_error_message(), HOUR_IN_SECONDS * 24 * 7 ); } set_site_transient( 'alpha_plugins', array(), HOUR_IN_SECONDS * 24 * 7 ); return false; } delete_transient( 'alpha_purchase_code_error_msg' ); setcookie( 'alpha_dismiss_code_error_msg', '', time() - 3600 ); foreach ( $plugins as $key => $plugin ) { $args['plugin'] = $plugin['slug']; $plugins[ $key ]['source'] = add_query_arg( $args, $importer_api->get_url( 'plugins' ) ); $plugins[ $key ]['image_url'] = ALPHA_ASSETS . '/images/admin/plugins/' . $args['plugin'] . '.svg'; $plugins[ $key ]['visibility'] = 'setup_wizard'; } // set transient set_site_transient( 'alpha_plugins', $plugins, 7 * 24 * HOUR_IN_SECONDS ); return $plugins; } /** * Register required plugins. * * @since 1.0 */ public function register_required_plugins() { /** * Array of configuration settings. Amend each line as needed. * If you want the default strings to be available under your own theme domain, * leave the strings uncommented. * Some of the strings are added into a sprintf, so see the comments at the * end of each line for what each argument will be. * * @var array * @since 1.0 */ $config = array( 'domain' => 'alpus', // Text domain - likely want to be the same as your theme. 'default_path' => '', // Default absolute path to pre-packaged plugins 'menu' => 'install-required-plugins', // Menu slug 'has_notices' => true, // Show admin notices or not 'is_automatic' => true, // Automatically activate plugins after installation or not 'message' => '', // Message to output right before the plugins table ); tgmpa( $this->plugins, $config ); } /** * Update plugins action url in setup wizard. * * @param array $action_links Plugins action link. * @return array Return updated action link. * @since 1.0 */ public function update_action_links( $action_links ) { $url = add_query_arg( array( 'page' => 'alpha-setup-wizard', 'step' => 'default_plugins', ), self_admin_url( 'admin.php' ) ); foreach ( $action_links as $key => $link ) { if ( $link ) { $link = preg_replace( '/]*)href="([^"]*)"/i', '