2016-12-28 31 views
2

私が作成したカスタムAPIエンドポイントにいくつかのデータを投稿しようとしています。Wp Rest ApiカスタムエンドポイントPOSTリクエスト

これは私のワードプレスカスタムエンドポイントコードです。

register_rest_route('api/v1', '/cities', array(
    'methods' => 'POST', 
    'callback' => 'create_city_from_data' 
)); 

とテストのために、私はこの

function create_city_from_data($req) { 
    return ['req' => $req]; 
} 

のような要求を返すようにしようとしていますが、常に、私は何も受け取っていないものは何でも私はペイロードに送って、応答として空のオブジェクトを受け取ります。

私のペイロードは、この

{ name: 'Hello', population: 565656 } 

のようなものですこれは、この機能を使用することにより、要求

{"req":{}} 

答えて

0

から受信されたものを、あなたはAPIでカスタムポストタイプのすべての記事を見ることができます。.. 。 APIビューアですべての投稿を取得します。ここにあなたのAPIビューア(例えば私は、GoogleのクロムADONをポストマンのJSON APIのビューを使用)

Domain-name/wp-json/showFavorites/v2?post_type=hotel 

'ホテル' に関する ライターURLは、カスタムposttypeです。

あなたのfunctions.php

add_action('rest_api_init', 'wp_api_show_favorites_endpoints'); 
function wp_api_show_favorites_endpoints() { 
    register_rest_route('showFavorites', '/v2', array(
     'methods' => 'GET', 
     'callback' => 'showFavorites_callback', 
    )); 
} 
function showFavorites_callback($request_data) { 
    global $wpdb; 
    $data = array(); 

    $table  = 'wp_posts'; 
    $parameters = $request_data->get_params(); 
    $post_type = $parameters['post_type']; 

    if($post_type!=''){ 
     $re_query  = "SELECT * FROM $table where post_type='$post_type'"; 
     $pre_results = $wpdb->get_results($re_query,ARRAY_A); 
     return $pre_results; 

    }else{ 
     $data['status']=' false '; 
     return $data; 

    } 
} 

でこの機能を追加し、この使用して、あなたはAPIからあなたのコンテンツを投稿することができます

 // POST All Posts using API 
add_action('rest_api_init', 'wp_api_add_posts_endpoints'); 
function wp_api_add_posts_endpoints() { 
    register_rest_route('addPost', '/v2', array(
     'methods' => 'POST', 
     'callback' => 'addPosts_callback', 
    )); 
} 
function addPosts_callback($request_data) { 
    global $wpdb; 
    $data = array(); 
    $table  = 'wp_posts'; 

    // Fetching values from API 
    $parameters = $request_data->get_params(); 
    $user_id = $parameters['user_id']; 
    $post_type = $parameters['post_type']; 
    $post_title = $parameters['post_title']; 
    $the_content = $parameters['the_content']; 
    $cats = $parameters['cats']; 
    $the_excerpt = $parameters['the_excerpt']; 
    $feature_img = $parameters['featured_image']; 

    // custom meta values 
    $contact_no = $parameters['contact_no']; 
    $email = $parameters['email']; 
    $hotel_url = $parameters['hotel_url']; 


    if($post_type!='' && $post_title!=''){ 

     // Create post object 
     $my_post = array(
     'post_title' => wp_strip_all_tags($post_title), 
     'post_content' => $the_content, 
     'post_author' => '', 
     'post_excerpt' => $the_excerpt, 
     'post_status' => 'publish', 
     'post_type' => $post_type, 
    ); 
     $new_post_id = wp_insert_post($my_post); 


     function wp_api_encode_acf($data,$post,$context){ 
      $customMeta = (array) get_fields($post['ID']); 

      $data['meta'] = array_merge($data['meta'], $customMeta); 
      return $data; 
     } 

     if(function_exists('get_fields')){ 
      add_filter('json_prepare_post', 'wp_api_encode_acf', 10, 3); 
     } 


     // Set post categories 
     $catss = explode(',', $cats); 
     if (!empty($catss)) { 
     if ($post_type == 'post') { 
      wp_set_object_terms($new_post_id, $catss, 'category', false); 
     } 
     else{ 
      wp_set_object_terms($new_post_id, $catss, 'Categories', false); // Executes if posttype is other 
     } 
     } 

     // Set Custom Metabox 
     if ($post_type != 'post') { 
     update_post_meta($new_post_id, 'contact-no', $contact_no); 
     update_post_meta($new_post_id, 'email', $email); 
     update_post_meta($new_post_id, 'hotel-url', $hotel_url); 
     } 

     // Set featured Image 
     $url = $feature_img; 
     $path = parse_url($url, PHP_URL_PATH); 
     $filename = basename($path); 

     $uploaddir = wp_upload_dir(); 
     $uploadfile = $uploaddir['path'] . '/' . $filename; 

     $contents= file_get_contents($feature_img); 
     $savefile = fopen($uploadfile, 'w'); 
     chmod($uploadfile, 0777); 
     fwrite($savefile, $contents); 
     fclose($savefile); 

     $wp_filetype = wp_check_filetype(basename($filename), null); 

     $attachment = array(
      'post_mime_type' => $wp_filetype['type'], 
      'post_title' => $filename, 
      'post_content' => '', 
      'post_status' => 'inherit' 
    ); 

     $attach_id = wp_insert_attachment($attachment, $uploadfile); 

     if ($attach_id) { 
     set_post_thumbnail($new_post_id, $attach_id); 
     } 

     if ($new_post_id) { 
      $data['status']='Post added Successfully.'; 
     } 
     else{ 
     $data['status']='post failed..'; 
     } 

    }else{ 
     $data['status']=' Please provide correct post details.'; 
    } 

    return ($data); 
} 
関連する問題