Skip to main content

Command Palette

Search for a command to run...

WordPress: Useful functions for working with arrays and objects

Published
3 min read
WordPress: Useful functions for working with arrays and objects
K

Speaks many languages, but currently only uses PHP, JavaScript and WordPress (I consider it its own language, since it's a big sandbox).

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 then array_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,
 *   ],
 * ]
 */
A

I would love to see more high quality articles like this one with super useful php functions 👍

1
A

Magnific article 😃!!!!

More from this blog

Pixelbart

12 posts

Just a simple web developer who prefers to work with WordPress and PHP. He is a freelance and employed web developer from Germany. Now tries to write here regularly and uses deepl to translate for it.