WP_REST_Posts_Controller::check_assign_terms_permission( WP_REST_Request $request ): bool

In this article

Checks whether current user can assign all terms sent with the current request.

Parameters

$requestWP_REST_Requestrequired
The request object with post and terms data.

Return

bool Whether the current user can assign the provided terms.

Source

protected function check_assign_terms_permission( $request ) {
	$taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) );
	foreach ( $taxonomies as $taxonomy ) {
		$base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name;

		if ( ! isset( $request[ $base ] ) ) {
			continue;
		}

		foreach ( (array) $request[ $base ] as $term_id ) {
			// Invalid terms will be rejected later.
			if ( ! get_term( $term_id, $taxonomy->name ) ) {
				continue;
			}

			if ( ! current_user_can( 'assign_term', (int) $term_id ) ) {
				return false;
			}
		}
	}

	return true;
}

Changelog

VersionDescription
4.7.0Introduced.

User Contributed Notes

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