WP_REST_Plugins_Controller::plugin_status_permission_check( string $plugin, string $new_status, string $current_status ): true|WP_Error

In this article

Handle updating a plugin’s status.

Parameters

$pluginstringrequired
The plugin file to update.
$new_statusstringrequired
The plugin’s new status.
$current_statusstringrequired
The plugin’s current status.

Return

true|WP_Error

Source

protected function plugin_status_permission_check( $plugin, $new_status, $current_status ) {
	if ( is_multisite() && ( 'network-active' === $current_status || 'network-active' === $new_status ) && ! current_user_can( 'manage_network_plugins' ) ) {
		return new WP_Error(
			'rest_cannot_manage_network_plugins',
			__( 'Sorry, you are not allowed to manage network plugins.' ),
			array( 'status' => rest_authorization_required_code() )
		);
	}

	if ( ( 'active' === $new_status || 'network-active' === $new_status ) && ! current_user_can( 'activate_plugin', $plugin ) ) {
		return new WP_Error(
			'rest_cannot_activate_plugin',
			__( 'Sorry, you are not allowed to activate this plugin.' ),
			array( 'status' => rest_authorization_required_code() )
		);
	}

	if ( 'inactive' === $new_status && ! current_user_can( 'deactivate_plugin', $plugin ) ) {
		return new WP_Error(
			'rest_cannot_deactivate_plugin',
			__( 'Sorry, you are not allowed to deactivate this plugin.' ),
			array( 'status' => rest_authorization_required_code() )
		);
	}

	return true;
}

Changelog

VersionDescription
5.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.