[wp-trac] [WordPress Trac] #22921: Allow get_users() to return array of values via 'fields' parameter
WordPress Trac
noreply at wordpress.org
Thu Nov 14 18:25:58 UTC 2013
#22921: Allow get_users() to return array of values via 'fields' parameter
-------------------------------------+-----------------------------
Reporter: chipbennett | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Future Release
Component: Users | Version: 3.5
Severity: normal | Resolution:
Keywords: has-patch needs-testing |
-------------------------------------+-----------------------------
Comment (by akforsyt):
Replying to [comment:8 chipbennett]:
> Replying to [comment:7 DavidAnderson]:
> > Aah - gotcha. Sorry, I was confusing myself before. You are completely
right ...
> >
> > ... up to a point (unless I'm still confused!).
> >
> > What you desire can already be done, using this syntax (which I use in
the "Use Admin Password" plugin):
> >
> >
> > {{{
> > $desired_fields = get_users("fields[]=email");
> > }}}
> >
> >
> > So I think we just need to change Codex to give an accurate
description, rather than re-add the same feature?
>
> Is that any different than:
>
> {{{
> $desired_fields = get_users( array( 'fields' => array( 'user_email' ) )
);
> }}}
>
> If so, then that ''still'' doesn't return the desired output. That
returns an array of ''objects'', each of which contains one entity,
`'user_email'`.
>
> So, when `'ID'` is passed as the single field, the output is an array of
user IDs; but if any other field is passed as the single field, an array
of objects is returned, since the only possible way to pass a single field
other than ID is by passing `'fields'` as an array.
>
> So, user IDs can be returned as a simple array, like so:
>
> {{{
> $user_IDs = get_users( array( 'fields' => 'ID' ) );
>
> $user IDs = array(
> [0] => '1',
> [1] => '2',
> [2] => '3'
> );
> }}}
>
> But to get a single-field value for any other field, you can ''only''
get an array of objects:
>
> {{{
> $user_emails = get_users( array( 'fields' => array( 'user_email' ) ) );
>
> $user_emails = array(
> [0] => object( 'user_email' => 'email at ...' ),
> [1] => object( 'user_email' => 'email at ...' ),
> [2] => object( 'user_email' => 'email at ...' )
> );
> }}}
>
>
> The purpose of this ticket is to allow for consistent return for single-
field values for fields other than `'ID'`; e.g. so that the following
return is possible:
>
> {{{
> $user_IDs = get_users( array( 'fields' => 'email' ) );
>
> $user IDs = array(
> [0] => 'email at ...',
> [1] => 'email at ...',
> [2] => 'email at ...'
> );
> }}}
>
> Currently this return is ''not'' possible, requiring a wasteful, second
step to loop through the array of objects to pluck the field values.
Thank you for providing this fix. This was driving me crazy as the codex
says it returns an array of values, but this is simply not true for any
field except for user id. There is not much discussion on this, although
I do agree, it is very useful.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/22921#comment:12>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list