wp_ajax_activate_plugin

The timeline below displays how wordpress function wp_ajax_activate_plugin has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Handles activating a plugin via AJAX.
 *
 * @since 6.5.0
 */
function wp_ajax_activate_plugin()
{
    check_ajax_referer('updates');
    if (empty($_POST['name']) || empty($_POST['slug']) || empty($_POST['plugin'])) {
        wp_send_json_error(array('slug' => '', 'pluginName' => '', 'plugin' => '', 'errorCode' => 'no_plugin_specified', 'errorMessage' => __('No plugin specified.')));
    }
    $status = array('activate' => 'plugin', 'slug' => wp_unslash($_POST['slug']), 'pluginName' => wp_unslash($_POST['name']), 'plugin' => wp_unslash($_POST['plugin']));
    if (!current_user_can('activate_plugin', $status['plugin'])) {
        $status['errorMessage'] = __('Sorry, you are not allowed to activate plugins on this site.');
        wp_send_json_error($status);
    }
    if (is_plugin_active($status['plugin'])) {
        $status['errorMessage'] = sprintf(
            /* translators: %s: Plugin name. */
            __('%s is already active.'),
            $status['pluginName']
        );
    }
    $activated = activate_plugin($status['plugin']);
    if (is_wp_error($activated)) {
        $status['errorMessage'] = $activated->get_error_message();
        wp_send_json_error($status);
    }
    wp_send_json_success($status);
}