Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
advanced-custom-fields
/
includes
/
fields
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if (!class_exists('ACF_Field_User')) { class ACF_Field_User extends ACF_Field { function initialize() { $this->name = 'user'; $this->label = __('User', 'acf'); $this->category = 'relational'; $this->defaults = array('role' => '', 'multiple' => 0, 'allow_null' => 0, 'return_format' => 'array'); acf_add_filter_variations('acf/fields/user/query', array('name', 'key'), 1); acf_add_filter_variations('acf/fields/user/result', array('name', 'key'), 2); acf_add_filter_variations('acf/fields/user/search_columns', array('name', 'key'), 3); add_action('wp_ajax_acf/fields/user/query', array($this, 'ajax_query')); add_action('wp_ajax_nopriv_acf/fields/user/query', array($this, 'ajax_query')); } function render_field_settings($field) { acf_render_field_setting($field, array('label' => __('Filter by role', 'acf'), 'instructions' => '', 'type' => 'select', 'name' => 'role', 'choices' => acf_get_user_role_labels(), 'multiple' => 1, 'ui' => 1, 'allow_null' => 1, 'placeholder' => __('All user roles', 'acf'))); acf_render_field_setting($field, array('label' => __('Allow Null?', 'acf'), 'instructions' => '', 'name' => 'allow_null', 'type' => 'true_false', 'ui' => 1)); acf_render_field_setting($field, array('label' => __('Select multiple values?', 'acf'), 'instructions' => '', 'name' => 'multiple', 'type' => 'true_false', 'ui' => 1)); acf_render_field_setting($field, array('label' => __('Return Format', 'acf'), 'instructions' => '', 'type' => 'radio', 'name' => 'return_format', 'choices' => array('array' => __('User Array', 'acf'), 'object' => __('User Object', 'acf'), 'id' => __('User ID', 'acf')), 'layout' => 'horizontal')); } function render_field($field) { $field['type'] = 'select'; $field['ui'] = 1; $field['ajax'] = 1; $field['choices'] = array(); if ($field['value']) { $user_ids = array_map('intval', acf_array($field['value'])); $users = acf_get_users(array('include' => $user_ids)); if ($users) { foreach ($users as $user) { $field['choices'][$user->ID] = $this->get_result($user, $field); } } } acf_render_field($field); } function get_result($user, $field, $post_id = 0) { $item = acf_get_user_result($user); $post_id = $post_id ? $post_id : acf_get_form_data('post_id'); return apply_filters('acf/fields/user/result', $item['text'], $user, $field, $post_id); } function load_value($value, $post_id, $field) { if ($value === 'null') { return false; } return $value; } function format_value($value, $post_id, $field) { if (!$value) { return false; } $user_ids = array_map('intval', acf_array($value)); $users = acf_get_users(array('include' => $user_ids)); if (!$users) { return false; } $value = array(); foreach ($users as $user) { if ($field['return_format'] == 'object') { $item = $user; } elseif ($field['return_format'] == 'array') { $item = array('ID' => $user->ID, 'user_firstname' => $user->user_firstname, 'user_lastname' => $user->user_lastname, 'nickname' => $user->nickname, 'user_nicename' => $user->user_nicename, 'display_name' => $user->display_name, 'user_email' => $user->user_email, 'user_url' => $user->user_url, 'user_registered' => $user->user_registered, 'user_description' => $user->user_description, 'user_avatar' => get_avatar($user->ID)); } else { $item = $user->ID; } $value[] = $item; } if (!$field['multiple']) { $value = array_shift($value); } return $value; } function update_value($value, $post_id, $field) { if (empty($value)) { return $value; } if (acf_is_sequential_array($value)) { $value = array_map('acf_idval', $value); $value = array_map('strval', $value); } else { $value = acf_idval($value); } return $value; } function ajax_query() { if (isset($_REQUEST['s'])) { $_REQUEST['search'] = $_REQUEST['s']; } if (isset($_REQUEST['paged'])) { $_REQUEST['page'] = $_REQUEST['paged']; } add_action('acf/ajax/query_users/init', array($this, 'ajax_query_init'), 10, 2); add_filter('acf/ajax/query_users/args', array($this, 'ajax_query_args'), 10, 3); add_filter('acf/ajax/query_users/result', array($this, 'ajax_query_result'), 10, 3); add_filter('acf/ajax/query_users/search_columns', array($this, 'ajax_query_search_columns'), 10, 4); acf_get_instance('ACF_Ajax_Query_Users')->request(); } function ajax_query_init($request, $query) { if (!$query->field) { $query->send(new WP_Error('acf_missing_field', __('Error loading field.', 'acf'), array('status' => 404))); } } function ajax_query_args($args, $request, $query) { if ($query->field['role']) { $args['role__in'] = acf_array($query->field['role']); } return apply_filters('acf/fields/user/query', $args, $query->field, $query->post_id); } function ajax_query_search_columns($columns, $search, $WP_User_Query, $query) { return apply_filters('acf/fields/user/search_columns', $columns, $search, $WP_User_Query, $query->field); } function ajax_query_result($item, $user, $query) { $item['text'] = apply_filters('acf/fields/user/result', $item['text'], $user, $query->field, $query->post_id); return $item; } function get_ajax_query($options = array()) { _deprecated_function(__FUNCTION__, '5.8.9'); return array(); } function user_search_columns($columns, $search, $WP_User_Query) { _deprecated_function(__FUNCTION__, '5.8.9'); return $columns; } } acf_register_field_type('ACF_Field_User'); }