ACF_Rest_Api::get_field_groups_by_id
Get all field groups for a given object.
Метод класса: ACF_Rest_Api{}
Хуков нет.
Возвращает
Массив. An array of matching field groups.
Использование
// private - только в коде основоного (родительского) класса $result = $this->get_field_groups_by_id( $object_id, $object_type, $object_sub_type, $scope );
- $object_id(int) (обязательный)
- .
- $object_type(строка) (обязательный)
'user','term', or'post'.- $object_sub_type(строка|null)
- The post type or taxonomy. When an
$object_typeof'user'is in play, this can be ignored.
По умолчанию:null - $scope(массив)
- Field group keys to limit the returned set of field groups to. This is used to scope field lookups to specific groups.
По умолчанию:array()
Код ACF_Rest_Api::get_field_groups_by_id() ACF Rest Api::get field groups by id ACF 6.4.2
private function get_field_groups_by_id( $object_id, $object_type, $object_sub_type = null, $scope = array() ) {
// When dealing with a term, we need the taxonomy in order to look up the relevant field groups. The taxonomy is expected
// in the $object_sub_type variable but when building our schema, this isn't readily available. This block ensures the
// taxonomy is set when not passed in.
if ( $object_type === 'term' && $object_sub_type === null ) {
$term = get_term( $object_id );
if ( ! $term instanceof WP_Term ) {
return array();
}
$object_sub_type = $term->taxonomy;
}
switch ( $object_type ) {
case 'user':
$args = array(
'user_id' => $object_id,
'rest' => true,
);
break;
case 'term':
$args = array( 'taxonomy' => $object_sub_type );
break;
case 'comment':
$comment = get_comment( $object_id );
$post_type = get_post_type( $comment->comment_post_ID );
$args = array( 'comment' => $post_type );
break;
case 'post':
default:
$args = array( 'post_id' => $object_id );
$child_rest_base = $this->request->get_url_param( 'child_rest_base' );
if ( $child_rest_base && 'post' === $object_type ) {
$args['post_type'] = $object_sub_type;
}
}
// Only return field groups that are configured to show in REST.
return array_filter(
acf_get_field_groups( $args ),
function ( $group ) use ( $scope ) {
if ( $scope and ! in_array( $group['key'], $scope ) ) {
return false;
}
return $group['show_in_rest'];
}
);
}