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 ($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;
}