2016-10-24 10 views
0

私はWordpress REST Apiに接続されたIonicとAngularjsに基づいて、私の最初のアプリを開発しています。Wordpress Rest API:Angularjsのidでカテゴリ名をクエリする方法

カテゴリ名を表示する必要がありますが、WP-API V2投稿リスト(example.com/wp-json/wp/v2/posts)にはカテゴリIDのみがあります。

私は

これをexample.com/wp-json/wp/v2/categoriesするための第2のhttpリクエストを行う必要があるカテゴリを得るためには、すべての記事をロードするために、コントローラの私の関数であり、それが動作します良い。

var postsApi = $rootScope.url + 'posts';  
$scope.loadPosts = function() { 

// Get all of our posts 
DataLoader.get(postsApi).then(function(response) { 

    $scope.posts = response.data; 

    $log.log(postsApi, response.data); 


}, function(response) { 
    $log.log(postsApi, response.data); 
}); 

が、どのように私は私がにexample.com/wp-json/wp/v2/categoriesでexample.com/wp-json/wp/v2/postsから取得することを、カテゴリIDを解析するために達成しません単一のループごとにhttp要求を出さずにカテゴリ名を取得しますか?

答えて

2

APIからの応答を変更するには、おそらくregister_new_field()を使用する必要があります。カスタム関数で

Modify response from wp-api v2

、あなたは1回のAPI呼び出しでポストカテゴリを取得し、JSONレスポンスに埋め込むことができます。

編集:私は、配列を作成する考え

add_action('rest_api_init', 'wp_rest_insert_tag_links'); 

function wp_rest_insert_tag_links(){ 

    register_rest_field('post', 
     'post_categories', 
     array(
      'get_callback' => 'wp_rest_get_categories_links', 
      'update_callback' => null, 
      'schema'   => null, 
     ) 
    ); 
    register_rest_field('post', 
     'post_tags', 
     array(
      'get_callback' => 'wp_rest_get_tags_links', 
      'update_callback' => null, 
      'schema'   => null, 
     ) 
    ); 
} 

function wp_rest_get_categories_links($post){ 
    $post_categories = array(); 
    $categories = wp_get_post_terms($post['id'], 'category', array('fields'=>'all')); 

foreach ($categories as $term) { 
    $term_link = get_term_link($term); 
    if (is_wp_error($term_link)) { 
     continue; 
    } 
    $post_categories[] = array('term_id'=>$term->term_id, 'name'=>$term->name, 'link'=>$term_link); 
} 
    return $post_categories; 

} 
function wp_rest_get_tags_links($post){ 
    $post_tags = array(); 
    $tags = wp_get_post_terms($post['id'], 'post_tag', array('fields'=>'all')); 
    foreach ($tags as $term) { 
     $term_link = get_term_link($term); 
     if (is_wp_error($term_link)) { 
      continue; 
     } 
     $post_tags[] = array('term_id'=>$term->term_id, 'name'=>$term->name, 'link'=>$term_link); 
    } 
    return $post_tags; 
} 
+0

のようなものに結果を書くことができます。カテゴリによって、私は感謝します –

0

あなたの唯一の方法は、あなたが必要とするすべてのものを最初の呼び出しで返すようにAPIを変更し、idsだけでなくAPIで新しいサービスを作成することだと思います。

IDを送信して受信した場合、その投稿のデータは、1回の通話でさまざまな投稿にそのデータを送信する方法ではありません。

+0

およびすべてのカテゴリを格納します。ここでは

のみget要求のために、APIレスポンスにポストカテゴリやタグのリンクを追加するために、実施例であります"example.com/wp-json/wp/v2/categories"から名前をカテゴリIDで取得しますか?可能であれば何とか –

+0

はい、それは可能ですが、APIへの複数の呼び出しを依頼していたにもかかわらず問題は残っています。あなたはcategories [0] .id = // idのような何らかの方法で配列にデータを格納し、categories [0] .name = // name –

関連する問題