Table of contents
WordPress is packed with useful features. It is easy to lose the overview. Here you will find a selection of functions that deal with arrays and objects. A small collection of useful functions that you can always use, if you know that they exist.
wp_parse_args
This function is used everywhere in WordPress and is excellent for your own work. It involves passing in an array of default values and an array of custom arguments. It returns an array with all arguments, overwriting the default values. You can also pass a query string if you ever work with URLs.
$args = [
'posts_per_page' = 15,
'fields' => 'ids',
];
$defaults = [
'post_type' => 'post',
'posts_per_page' => 10,
'post_status' => 'publish',
];
$results = wp_parse_args($args, $defaults);
/**
* [
* 'post_type' => 'post',
* 'posts_per_page' => 15,
* 'post_status' => 'publish',
* 'fields' => 'ids',
* ]
*/
shortcode_atts
Similar to wp_parse_args
, two arrays are passed in. However, only the arguments that are returned as default values are spit out. Mainly the function is used within shortcodes of WordPress, so that no forbidden arguments can be passed via shortcode. But it can also be used for your own purposes.
$args = [
'posts_per_page' = 15,
'fields' => 'ids',
];
$defaults = [
'post_type' => 'post',
'posts_per_page' => 10,
'post_status' => 'publish',
];
$results = shortcode_atts($defaults, $args);
/**
* [
* 'post_type' => 'post',
* 'posts_per_page' => 15,
* 'post_status' => 'publish',
* ]
*/
wp_list_pluck
Super super useful! Here you pass an array and a key name. The output will be a new array with the values of the given key. For example, if you have an array of post objects, you can use this to create an array that only uses the IDs. WordPress uses this function in pretty much all parts of the core.
Note: The array is not unique. You have to take care of that yourself, so that there are no duplicate entries. Use
array_unique
and thenarray_filter
to correct the keys.
$posts = [
[
'ID' => 1,
'name' => 'Ein schöner Name #1',
'status' => 'publish',
],
[
'ID' => 2,
'name' => 'Ein schöner Name #2',
'status' => 'publish'
],
[
'ID' => 3,
'name' => 'Ein schöner Name #3',
'status' => 'draft',
],
];
$results = wp_list_pluck($posts, 'ID');
/**
* [ 1, 2, 3 ]
*/
wp_list_filter
This can be used to filter an array. Here you return the array, a key and the corresponding value. The function will then return a new array with only the elements matching the given key/value pair or the value you specified. The last parameter specifies how something is filtered. You can also specify OR
, which is useful if you have set multiple filter pairs and want one of those filters to match, but not necessarily all at once with AND
.
$posts = [
[
'ID' => 1,
'name' => 'Ein schöner Name #1',
'status' => 'publish',
],
[
'ID' => 2,
'name' => 'Ein schöner Name #2',
'status' => 'publish'
],
[
'ID' => 3,
'name' => 'Ein schöner Name #3',
'status' => 'draft',
],
];
$filter = ['status' => 'publish'];
$operator = 'AND';
$results = wp_list_filter($posts, $filter, $operator);
/**
* [
* [
* 'ID' => 1,
* 'name' => 'Ein schöner Name #1',
* 'status' => 'publish,
* ],
* [
* 'ID' => 2,
* 'name' => 'Ein schöner Name #2',
* 'status' => 'publish,
* ],
* ]
*/