In the documentation of wp_insert_post there is a changelog on half of the page which says the following:

Since: WordPress 4.4.0 A 'meta_input' array can now be passed to $postarr to add post meta data.

I'm using Wordpress 4.4.2. I'll try to add a new post by running the code as follows:

function handle_post($post) 
    wp_insert_post( array(
        'post_title'    => $post['title'],
        'post_type'     => 'werknemers',
        'meta_input'    => array(
                'key'   => 'name',
                'value' => $post['name']
                'key'   => 'city',
                'value' => $post['city']
    ) ); 

The post is added to the database, but without meta data. I've found this stack post, but I can't figure out how to implement the if statement.

I'm also interested in the way to add taxonomies (tax_input).

1 Answer 1


meta_input is just a single-dimension array as key => value:

'meta_input' => array(
    'name' => $post['name'],
    'city' => $post['city']

tax_input is slightly different, with tax as key and an array of values:

'tax_input' => array( 
    'taxonomy_name' => array( 

Note that for tax_input to work, the user currently logged in when the code runs has to have the capability to manage that taxonomy, otherwise it will fail silently.

  • 1
    Sorry for the late respons, but thanks for the clear explanation! Totally worked out as expected
    – ronnyrr
    Feb 25, 2016 at 20:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.