[ 'https://ps.w.org/ar-viewer/assets/icon-256x256.gif', 'https://ps.w.org/ar-viewer/assets/icon-128x128.gif', ], ]; // Return custom icons if available, otherwise use default WordPress.org URLs if (isset($custom_icons[$plugin_slug_clean])) { return $custom_icons[$plugin_slug_clean]; } return [ "https://ps.w.org/{$plugin_slug_clean}/assets/icon-256x256.png", // Then PNG "https://ps.w.org/{$plugin_slug_clean}/assets/icon-128x128.png", // Medium PNG "https://ps.w.org/{$plugin_slug_clean}/assets/icon-256x256.gif", // Try GIF first "https://ps.w.org/{$plugin_slug_clean}/assets/icon-128x128.gif", // Medium GIF ]; } } ?>

[], 'loading' => true, 'message' => __('Loading plugin data...', 'ultimate-post-kit') ]); } // Send response wp_send_json_success([ 'plugins' => $plugins_data, 'loading' => false, 'message' => __('Plugin data loaded successfully.', 'ultimate-post-kit') ]); } /** * AJAX handler for plugin installation */ public function install_plugin_ajax() { // Check nonce if (!wp_verify_nonce($_POST['nonce'], 'upk_install_plugin_nonce')) { wp_send_json_error(['message' => __('Security check failed', 'ultimate-post-kit')]); } // Check user capability if (!current_user_can('install_plugins')) { wp_send_json_error(['message' => __('You do not have permission to install plugins', 'ultimate-post-kit')]); } $plugin_slug = sanitize_text_field($_POST['plugin_slug']); if (empty($plugin_slug)) { wp_send_json_error(['message' => __('Plugin slug is required', 'ultimate-post-kit')]); } // Include necessary WordPress files require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php'; // Get plugin information $api = plugins_api('plugin_information', [ 'slug' => $plugin_slug, 'fields' => [ 'sections' => false, ], ]); if (is_wp_error($api)) { wp_send_json_error(['message' => __('Plugin not found: ', 'ultimate-post-kit') . $api->get_error_message()]); } // Install the plugin $skin = new \WP_Ajax_Upgrader_Skin(); $upgrader = new \Plugin_Upgrader($skin); $result = $upgrader->install($api->download_link); if (is_wp_error($result)) { wp_send_json_error(['message' => __('Installation failed: ', 'ultimate-post-kit') . $result->get_error_message()]); } elseif ($skin->get_errors()->has_errors()) { wp_send_json_error(['message' => __('Installation failed: ', 'ultimate-post-kit') . $skin->get_error_messages()]); } elseif (is_null($result)) { wp_send_json_error(['message' => __('Installation failed: Unable to connect to filesystem', 'ultimate-post-kit')]); } // Get installation status $install_status = install_plugin_install_status($api); wp_send_json_success([ 'message' => __('Plugin installed successfully!', 'ultimate-post-kit'), 'plugin_file' => $install_status['file'], 'plugin_name' => $api->name ]); } } // Initialize the manager new UltimatePostKit_Others_Plugin_Manager(); /** * Helper function for easy rendering */ function ultimate_post_kit_others_plugin() { $manager = new UltimatePostKit_Others_Plugin_Manager(); $manager->render_others_plugin(); }