2017-03-03 5 views
-1

WordPress用のJSON-APIプラグインを使用していますが、ポストタイプから投稿のリストを返すカスタムコントローラを作成しています。ここ WordPress投稿用の出力JSON

[{ 
    "id": 1, 
    "title": "Sample Post Title" 
}, 
{ 
    "id": 2, 
    "title": "Sample Post Title" 
}, 
.... 
] 

は私のカスタムコントローラである:私が欲しいの出力は次のようなものである

class JSON_API_Custom_Controller { 

public function get_posts_type() { 
    global $json_api; 

    $posts_all  = array(); 

    $args = array('post_type' => 'shopping', 'posts_per_page' => -1); 
    $loop = new WP_Query($args); 
    if ($loop->have_posts()) { 
     while ($loop->have_posts()) : $loop->the_post(); 
     $post_id = get_the_ID(); 
     $post_title = get_the_title($post_id); 

     $posts_all []= array(
     'id' => $post_id, 
     'title' => $post_title 
     ); 

     endwhile; 
    } 

    return $posts_all; 

    } 

} 

が、出力は次のとおりです。

{ 
    "status":"ok", 
    "0":{ 
     "id":1, 
     "title":"sample title" 
    }, 
    "1":{ 
     "id":2, 
     "title":"sample title" 
    } 
} 

どのようにオブジェクトのJSON配列することができます私は出力希望の出力が好きですか?

+0

wowのように思えるDown Voteの男が理由なしですべて投票しています! –

答えて

-1

json応答にstatus:okを追加すると、プラグインの機能と思われます。

だから、あなたが一つのキーで配列を返すために機能変更することができます。その後

// not this 
//return $posts_all; 

// but this 
return array('posts' => $posts_all); 

、あなたはまだJSONレスポンスでstatusキーを持っていますが、また、あなたはpostsキーを持って、あなたのことそれ以上繰り返すことができます。

更新: 私は、フィルタjson_api_encodeがあなたを助けるかもしれないと思います。

add_filter('json_api_encode', 'remove_status'); 

function remove_status($response) { 
    unset($response['status']); 

    return $response; 
} 
+0

apiが実際にエンコードされたjsonを返すので、正しい形式であることを確認するだけです。とにかく私は 'ok'と' posts'を削除できますか? –

+1

マニュアルを読んだ後、私は方法を見つけるようです。アップデートを参照してください。 –

+0

awesome :)問題の解決策を見つけるためにドキュメントを参照してくれてありがとう。なぜ誰かが質問とすべての回答を投票したのか分かりませんが、答えとして答えをマークしました:) –

-1

次のコードがそれを行うことを願っております:statusのキーを解除することができます。

return json_encode($posts_all); 

出力例のように "ステータス"を取得するには、コードに同じものを追加する必要があります。

+0

apiが実際にエンコードされたjsonを返します。これは必要ありません。 –

+0

雨、コードを通してください <?php $ arr [0] = array( 'id' => 123、 'post_title' => 'テスト');$ arr [1] = array( 'id' => 124、 'post_title' => 'test1'); echo json_encode($ arr); ?> – Tristup