Adding Plugin-specific Fields with wp_insert_post()?

(Moderator’s note: The original title was “wp_insert_post() and plugins”)

I use wp_insert_post() like this:

Read More
 $my_post = array(
 'post_title' => 'title',
 'post_content' => $post,
 'post_status' => 'publish',
 'post_author' => 1,
 'post_date' => date('Y-m-d H:i:s', $oldtime),
 'post_category' => array(3,4)

 );

 wp_insert_post( $my_post );

Everything works fine, but I want to use plugins like “All in One SEO Pack” I can’t figure out how to save their custom fields. I tried this but it did not work:

 $my_post = array(
 'post_title' => 'title',
 'post_content' => $post,
 'post_status' => 'publish',
 'post_author' => 1,
 'post_date' => date('Y-m-d H:i:s', $oldtime),
 'post_category' => array(3,4)
 'aiosp_description' => 'description',
 'aiosp_keywords' => 'keywords' // these (aiosp_) is from post edit page in WP (<input type="text" size="62" name="aiosp_keywords" value="keywords">)

 );

 wp_insert_post( $my_post );

How can I save these fields? Thanks for any help!!!

Related posts

Leave a Reply

2 comments

  1. @sorich87’s answer is 99% there. The difference is that All-in-One SEO Pack follows certain best practices and uses a prefix of '_aioseop_' on its meta keys. That makes the actual working code look more like this:

    $my_post = array(
      'post_title' => 'title',
      'post_content' => $post,
      'post_status' => 'publish',
      'post_author' => 1,
      'post_date' => date('Y-m-d H:i:s', $oldtime),
      'post_category' => array(3,4)
    );
    
    $post_id = wp_insert_post( $my_post );
    
    if( !is_wp_error($post_id) && $post_id > 0 ) {
      add_post_meta($post_id, '_aioseop_keywords', $keywords);
      add_post_meta($post_id, '_aioseop_description', $description);
      add_post_meta($post_id, '_aioseop_title', $title);
    }
    

    Here’s a screenshot of the All-in-One SEO Pack specific records in the wp_postmeta table of my test system using Navicat for MySQL to view them:

    Screenshot of Post Meta records used by All-in-One SEO Pack
    (source: mikeschinkel.com)

  2. All-in-one SEO data are saved as post metas. You will need to use add_post_meta:

    $my_post = array(
        'post_title' => 'title',
        'post_content' => $post,
        'post_status' => 'publish',
        'post_author' => 1,
        'post_date' => date('Y-m-d H:i:s', $oldtime),
        'post_category' => array(3,4)
    );
    
    $post_id = wp_insert_post( $my_post );
    
    if( !is_wp_error($post_id) && $post_id > 0 ) {
        add_post_meta($post_id, 'keywords', $keywords);
        add_post_meta($post_id, 'description', $description);
        add_post_meta($post_id, 'title', $title);
    }