'siteorigin_panels_lite_plugin_activation', 'plugin' => $plugin['slug'], 'plugin_name' => $plugin['name'], 'plugin_source' => $plugin['source'], 'siteorigin-pa-install' => 'install-plugin', ), admin_url( 'themes.php' ) ), 'siteorigin-pa-install' ); $method = ''; // Leave blank so WP_Filesystem can populate it as necessary $fields = array( sanitize_key( 'siteorigin-pa-install' ) ); // Extra fields to pass to WP_Filesystem if ( false === ( $creds = request_filesystem_credentials( $url, $method, false, false, $fields ) ) ) return true; if ( ! WP_Filesystem( $creds ) ) { request_filesystem_credentials( $url, $method, true, false, $fields ); // Setup WP_Filesystem return true; } require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; // Need for plugins_api require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; // Need for upgrade classes /** Prep variables for Plugin_Installer_Skin class */ $title = sprintf( __('Installing %s', 'ultra'), $plugin['name'] ); $url = add_query_arg( array( 'action' => 'install-plugin', 'plugin' => $plugin['slug'] ), 'update.php' ); if ( isset( $_GET['from'] ) ) $url .= add_query_arg( 'from', urlencode( stripslashes( $_GET['from'] ) ), $url ); $nonce = 'install-plugin_' . $plugin['slug']; // Find the source of the plugin $source = !empty( $plugin['source'] ) ? $plugin['source'] : 'http://downloads.wordpress.org/plugin/'.urlencode($plugin['slug']).'.zip'; /** Create a new instance of Plugin_Upgrader */ $upgrader = new Plugin_Upgrader( $skin = new Plugin_Installer_Skin( compact( 'type', 'title', 'url', 'nonce', 'plugin', 'api' ) ) ); /** Perform the action and install the plugin from the $source urldecode() */ $upgrader->install( $source ); /** Flush plugins cache so we can make sure that the installed plugins list is always up to date */ wp_cache_flush(); } } /** * Get the admin install URL * * @return bool|string */ function siteorigin_panels_lite_plugin_activation_install_url(){ return wp_nonce_url( add_query_arg( array( 'page' => 'siteorigin_panels_lite_plugin_activation', 'plugin' => 'siteorigin-panels', 'plugin_name' => __('Page Builder', 'ultra'), 'plugin_source' => !empty($source) ? urlencode($source) : false, 'siteorigin-pa-install' => 'install-plugin', ), admin_url( 'themes.php' ) ), 'siteorigin-pa-install' ); } /** * If we're trying to install Page Builder, and it already exists, then activate it instead. * * @return bool */ function siteorigin_panels_lite_check_installing(){ // This is to prevent the issue where this URL is called from outside the admin if( !is_admin() || !function_exists('get_plugins') ) return false; if( empty($_GET['page']) || $_GET['page'] != 'siteorigin_panels_lite_plugin_activation') return false; $plugin = 'siteorigin-panels'; $plugins = get_plugins(); $plugins = array_keys($plugins); $installed = false; foreach($plugins as $plugin_path){ if(strpos($plugin_path, $plugin.'/') === 0) { $installed = true; break; } } if($installed && !is_plugin_active($plugin)){ $redirect = wp_nonce_url( self_admin_url('plugins.php?action=activate&plugin='.$plugin_path), 'activate-plugin_'.$plugin_path); $redirect = str_replace('&', '&', $redirect); wp_redirect( $redirect ); exit(); } } add_action('admin_init', 'siteorigin_panels_lite_check_installing');