Title: Custom Fields &amp; Thumbnails
Last modified: August 22, 2016

---

# Custom Fields & Thumbnails

 *  Resolved [azemar](https://wordpress.org/support/users/azemar/)
 * (@azemar)
 * [11 years, 8 months ago](https://wordpress.org/support/topic/custom-fields-thumbnails/)
 * Hey, I am probably missing something simple, but anyway couple things which doesn’t
   seem to be mentioned in documentation:
    1) Thumbnail – passing it as parameter
   what do I set its value to, currently anything I try does nothing? I am using
   create_post and passing image as attachment. 2) Custom_fields – passing an object,
   should I pass json of lets say {“field1″:1,”field2″:”la”} or what?
 * In other words how to pass these two parameters in POST request.
 * [https://wordpress.org/plugins/json-api/](https://wordpress.org/plugins/json-api/)

Viewing 3 replies - 1 through 3 (of 3 total)

 *  Thread Starter [azemar](https://wordpress.org/support/users/azemar/)
 * (@azemar)
 * [11 years, 8 months ago](https://wordpress.org/support/topic/custom-fields-thumbnails/#post-5346330)
 * Nevermind modified it to fit my needs.
 *  [sabrosabrosa](https://wordpress.org/support/users/sabrosabrosa/)
 * (@sabrosabrosa)
 * [11 years, 3 months ago](https://wordpress.org/support/topic/custom-fields-thumbnails/#post-5346429)
 * Can you please explain or write code how did you resolved this?
 * I am having trouble posting custom_fields via JSON API? What should to write 
   to custom fields?
 * Thanks in advance
 *  Thread Starter [azemar](https://wordpress.org/support/users/azemar/)
 * (@azemar)
 * [11 years, 3 months ago](https://wordpress.org/support/topic/custom-fields-thumbnails/#post-5346430)
 * It has been a while so I am a bit unsure what changes exactly I did, but maybe
   you’ll get something out of this.
    This is modified plugin file under /model/
   post.php
 *     ```
       <?php
   
       class JSON_API_Post {
   
         // Note:
         //   JSON_API_Post objects must be instantiated within The Loop.
   
         var $id;              // Integer
         var $type;            // String
         var $slug;            // String
         var $url;             // String
         var $status;          // String ("draft", "published", or "pending")
         var $title;           // String
         var $title_plain;     // String
         var $content;         // String (modified by read_more query var)
         var $excerpt;         // String
         var $date;            // String (modified by date_format query var)
         var $modified;        // String (modified by date_format query var)
         var $categories;      // Array of objects
         var $tags;            // Array of objects
         var $author;          // Object
         var $comments;        // Array of objects
         var $attachments;     // Array of objects
         var $comment_count;   // Integer
         var $comment_status;  // String ("open" or "closed")
         var $thumbnail;       // String
         var $custom_fields;   // Object (included by using custom_fields query var)
   
         function JSON_API_Post($wp_post = null) {
           if (!empty($wp_post)) {
             $this->import_wp_object($wp_post);
           }
           do_action("json_api_{$this->type}_constructor", $this);
         }
   
         function create($values = null) {
           unset($values['id']);
           if (empty($values) || empty($values['title'])) {
             $values = array(
               'title' => 'Untitled',
               'content' => ''
             );
           }
           return $this->save($values);
         }
   
         function update($values) {
           $values['id'] = $this->id;
           return $this->save($values);
         }
   
         function save($values = null) {
           global $json_api, $user_ID;
   
           $wp_values = array();
   
           if (!empty($values['id'])) {
             $wp_values['ID'] = $values['id'];
           }
   
           if (!empty($values['type'])) {
             $wp_values['post_type'] = $values['type'];
           }
   
           if (!empty($values['status'])) {
             $wp_values['post_status'] = $values['status'];
           }
   
           if (!empty($values['title'])) {
             $wp_values['post_title'] = $values['title'];
           }
   
           if (!empty($values['content'])) {
             $wp_values['post_content'] = $values['content'];
           }
   
           if (!empty($values['author'])) {
             $author = $json_api->introspector->get_author_by_login($values['author']);
             $wp_values['post_author'] = $author->id;
           }
   
           if (isset($values['categories'])) {
             $categories = explode(',', $values['categories']);
             foreach ($categories as $category_slug) {
               $category_slug = trim($category_slug);
               $category = $json_api->introspector->get_category_by_slug($category_slug);
               if (empty($wp_values['post_category'])) {
                 $wp_values['post_category'] = array($category->id);
               } else {
                 array_push($wp_values['post_category'], $category->id);
               }
             }
           }
   
           if (isset($values['tags'])) {
             $tags = explode(',', $values['tags']);
             foreach ($tags as $tag_slug) {
               $tag_slug = trim($tag_slug);
               if (empty($wp_values['tags_input'])) {
                 $wp_values['tags_input'] = array($tag_slug);
               } else {
                 array_push($wp_values['tags_input'], $tag_slug);
               }
             }
           }
   
           if (isset($wp_values['ID'])) {
             $this->id = wp_update_post($wp_values);
           } else {
             $this->id = wp_insert_post($wp_values);
           }
   
           if (!empty($_FILES['attachment'])) {
             include_once ABSPATH . '/wp-admin/includes/file.php';
             include_once ABSPATH . '/wp-admin/includes/media.php';
             include_once ABSPATH . '/wp-admin/includes/image.php';
             $attachment_id = media_handle_upload('attachment', $this->id);
             $this->attachments[] = new JSON_API_Attachment($attachment_id);
   
             $meta_value = get_post_meta( $this->id, '_easy_image_gallery');
             $errors = array_filter($errors);
   
             if (empty($errors)) {
               array_push($meta_value, ',', $attachment_id);
             }else{
                array_push($meta_value, $attachment_id);
             }
   
             update_post_meta( $this->id, '_easy_image_gallery',  implode(" ",$meta_value));
             update_post_meta( $this->id, '_easy_image_gallery_link_images',  'on');
             unset($_FILES['attachment']);
           }
   
           if (!empty($values['thumbnail'])) {
             update_post_meta( $this->id, '_thumbnail_id', $attachment_id);
           }
   
           if (!empty($values['emptyParam'])) {
           }
   
           if (isset($values['comments'])) {
             $data = array(
               'comment_post_ID' => $this->id,
               'user_id' => $values['authorName'],
               'comment_author' => $author,
               'comment_content' => $values['comments'],
               'comment_parent' => $values['attachmentId'],
               'comment_date' => $time,
             );
   
             wp_insert_comment($data);
           }
   
           if (isset($values['attachmentUpdateId'])) {
             wp_update_post(
                     array (
                       'ID'            => $values['attachmentUpdateId'],
                       'post_title'    => $values['attachmentUpdateTitle'],
                       'post_excerpt'  => $values['attachmentUpdateContent'],
             ));
           }
   
           foreach($values as $key => $value){
             if(strlen(strstr($key,'id'))==0 &&
             strlen(strstr($key,'type'))==0 &&
             strlen(strstr($key,'status'))==0 &&
             strlen(strstr($key,'title'))==0 &&
             strlen(strstr($key,'content'))==0 &&
             strlen(strstr($key,'nonce'))==0 &&
             strlen(strstr($key,'attachment'))==0 &&
             strlen(strstr($key,'cookie'))==0 &&
             strlen(strstr($key,'author'))==0 &&
             strlen(strstr($key,'categories'))==0 &&
             strlen(strstr($key,'thumbnail'))==0 &&
             strlen(strstr($key,'emptyParam'))==0 &&
             strlen(strstr($key,'comments'))==0 &&
             strlen(strstr($key,'authorName'))==0 &&
             strlen(strstr($key,'attachmentId'))==0 &&
             strlen(strstr($key,'attachmentUpdateId'))==0 &&
             strlen(strstr($key,'attachmentUpdateTitle'))==0 &&
             strlen(strstr($key,'attachmentUpdateContent'))==0 &&
             strlen(strstr($key,'tags'))==0)//it must be a custom_field, so add it
               update_post_meta($this->id,$key,$value);
           }
   
           $wp_post = get_post($this->id);
           $this->import_wp_object($wp_post);
   
           return $this->id;
         }
   
         function import_wp_object($wp_post) {
           global $json_api, $post;
           $date_format = $json_api->query->date_format;
           $this->id = (int) $wp_post->ID;
           setup_postdata($wp_post);
           $this->set_value('type', $wp_post->post_type);
           $this->set_value('slug', $wp_post->post_name);
           $this->set_value('url', get_permalink($this->id));
           $this->set_value('status', $wp_post->post_status);
           $this->set_value('title', get_the_title($this->id));
           $this->set_value('title_plain', strip_tags(@$this->title));
           $this->set_content_value();
           $this->set_value('excerpt', apply_filters('the_excerpt', get_the_excerpt()));
           $this->set_value('date', get_the_time($date_format));
           $this->set_value('modified', date($date_format, strtotime($wp_post->post_modified)));
           $this->set_categories_value();
           $this->set_tags_value();
           $this->set_author_value($wp_post->post_author);
           $this->set_comments_value();
           $this->set_attachments_value();
           $this->set_value('comment_count', (int) $wp_post->comment_count);
           $this->set_value('comment_status', $wp_post->comment_status);
           $this->set_thumbnail_value();
           $this->set_custom_fields_value();
           $this->set_custom_taxonomies($wp_post->post_type);
           do_action("json_api_import_wp_post", $this, $wp_post);
         }
   
         function set_value($key, $value) {
           global $json_api;
           if ($json_api->include_value($key)) {
             $this->$key = $value;
           } else {
             unset($this->$key);
           }
         }
   
         function set_content_value() {
           global $json_api;
           if ($json_api->include_value('content')) {
             $content = get_the_content($json_api->query->read_more);
             $content = apply_filters('the_content', $content);
             $content = str_replace(']]>', ']]>', $content);
             $this->content = $content;
           } else {
             unset($this->content);
           }
         }
   
         function set_categories_value() {
           global $json_api;
           if ($json_api->include_value('categories')) {
             $this->categories = array();
             if ($wp_categories = get_the_category($this->id)) {
               foreach ($wp_categories as $wp_category) {
                 $category = new JSON_API_Category($wp_category);
                 if ($category->id == 1 && $category->slug == 'uncategorized') {
                   // Skip the 'uncategorized' category
                   continue;
                 }
                 $this->categories[] = $category;
               }
             }
           } else {
             unset($this->categories);
           }
         }
   
         function set_tags_value() {
           global $json_api;
           if ($json_api->include_value('tags')) {
             $this->tags = array();
             if ($wp_tags = get_the_tags($this->id)) {
               foreach ($wp_tags as $wp_tag) {
                 $this->tags[] = new JSON_API_Tag($wp_tag);
               }
             }
           } else {
             unset($this->tags);
           }
         }
   
         function set_author_value($author_id) {
           global $json_api;
           if ($json_api->include_value('author')) {
             $this->author = new JSON_API_Author($author_id);
           } else {
             unset($this->author);
           }
         }
   
         function set_comments_value() {
           global $json_api;
           if ($json_api->include_value('comments')) {
             $this->comments = $json_api->introspector->get_comments($this->id);
           } else {
             unset($this->comments);
           }
         }
   
         function set_attachments_value() {
           global $json_api;
           if ($json_api->include_value('attachments')) {
             $this->attachments = $json_api->introspector->get_attachments($this->id);
           } else {
             unset($this->attachments);
           }
         }
   
         function set_thumbnail_value() {
           global $json_api;
           if (!$json_api->include_value('thumbnail') ||
               !function_exists('get_post_thumbnail_id')) {
             unset($this->thumbnail);
             return;
           }
           $attachment_id = get_post_thumbnail_id($this->id);
           if (!$attachment_id) {
             unset($this->thumbnail);
             return;
           }
           $thumbnail_size = $this->get_thumbnail_size();
           $this->thumbnail_size = $thumbnail_size;
           $attachment = $json_api->introspector->get_attachment($attachment_id);
           $image = $attachment->images[$thumbnail_size];
           $this->thumbnail = $image->url;
           $this->thumbnail_images = $attachment->images;
         }
   
         function set_custom_fields_value() {
           global $json_api;
           if ($json_api->include_value('custom_fields')) {
             $wp_custom_fields = get_post_custom($this->id);
             $this->custom_fields = new stdClass();
             if ($json_api->query->custom_fields) {
               $keys = explode(',', $json_api->query->custom_fields);
             }
             foreach ($wp_custom_fields as $key => $value) {
               if ($json_api->query->custom_fields) {
                 if (in_array($key, $keys)) {
                   $this->custom_fields->$key = $wp_custom_fields[$key];
                 }
               } else if (substr($key, 0, 1) != '_') {
                 $this->custom_fields->$key = $wp_custom_fields[$key];
               }
             }
           } else {
             unset($this->custom_fields);
           }
         }
   
         function set_custom_taxonomies($type) {
           global $json_api;
           $taxonomies = get_taxonomies(array(
             'object_type' => array($type),
             'public'   => true,
             '_builtin' => false
           ), 'objects');
           foreach ($taxonomies as $taxonomy_id => $taxonomy) {
             $taxonomy_key = "taxonomy_$taxonomy_id";
             if (!$json_api->include_value($taxonomy_key)) {
               continue;
             }
             $taxonomy_class = $taxonomy->hierarchical ? 'JSON_API_Category' : 'JSON_API_Tag';
             $terms = get_the_terms($this->id, $taxonomy_id);
             $this->$taxonomy_key = array();
             if (!empty($terms)) {
               $taxonomy_terms = array();
               foreach ($terms as $term) {
                 $taxonomy_terms[] = new $taxonomy_class($term);
               }
               $this->$taxonomy_key = $taxonomy_terms;
             }
           }
         }
   
         function get_thumbnail_size() {
           global $json_api;
           if ($json_api->query->thumbnail_size) {
             return $json_api->query->thumbnail_size;
           } else if (function_exists('get_intermediate_image_sizes')) {
             $sizes = get_intermediate_image_sizes();
             if (in_array('post-thumbnail', $sizes)) {
               return 'post-thumbnail';
             }
           }
           return 'thumbnail';
         }
   
       }
   
       ?>
       ```
   

Viewing 3 replies - 1 through 3 (of 3 total)

The topic ‘Custom Fields & Thumbnails’ is closed to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/json-api.svg)
 * [JSON API](https://wordpress.org/plugins/json-api/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/json-api/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/json-api/)
 * [Active Topics](https://wordpress.org/support/plugin/json-api/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/json-api/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/json-api/reviews/)

 * 3 replies
 * 2 participants
 * Last reply from: [azemar](https://wordpress.org/support/users/azemar/)
 * Last activity: [11 years, 3 months ago](https://wordpress.org/support/topic/custom-fields-thumbnails/#post-5346430)
 * Status: resolved