wp_insert_post add meta_input

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(
            array(
                'key'   => 'name',
                'value' => $post['name']
            ),
            array(
                '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
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( 
        'term', 
        'term2', 
        'term3' 
    ) 
)

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.

Leave a Comment