web-dev-qa-db-ja.com

4.6を手伝ってください。 JSON APIプラグインの添付ファイル応答オブジェクト

私はJSON APIプラグインの大ファンです。開発者は素晴らしい仕事をしました、そして私は彼にとても感謝しています。私はjsonとjqueryを使って作業する方法を学び、ajaxリクエストから返される情報を制限しようとしています。私はインクルードとカスタムフィールドオプションをうまく使うことができました、しかしAMDは少し短い理解をしていません4.6。添付ファイル応答オブジェクト。親指画像のみを提供するように結果を制限する方法はありますか?もしそうなら、誰でも構文の例を提供することができます。クエリ文字列でこれらのオブジェクトをアドレス指定する方法がわかりません。どんな助けでも素晴らしいでしょう。私が何かを明確にする必要があるかどうか私に知らせてください。

このリクエストURLで結果を絞り込むことができました:/?json=get_recent_posts&include=title,url,categories,thumbnail,custom_fields&custom_fields=field1'

プラグインのURL: http://wordpress.org/extend/plugins/json-api/other_notes/ プラグインの作成者: http://profiles.wordpress.org/users/dphiffer/

よろしく、WordPress開発者の仲間

7
generalchaos

テーマ関数ファイルに以下を追加します。

add_theme_support( 'post-thumbnails' );    
set_post_thumbnail_size( 50, 50, true ); // 50 pixels wide by 50 pixels tall, crop mode

..etc - http://codex.wordpress.org/Post_Thumbnails#Setting_a_Post_Thumbnail

次に、テーマのインデックスファイルで、has postループの内側に次のコードを追加します。

// check if the post has a Post Thumbnail assigned to it.    
if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}

JSONを呼び出すと、thumbnailという追加のフィールドが表示されます。

2
Jerome

私はそれが本当にすべてがこの情報を制限することに関する問題が何であるかにかかっていると思います。この特定のデータを公開したくないですか。そんなに多くのデータを反復処理したくありませんか。あなたは$ .getJSON()リクエストを通してこのデータを渡すつもりですか?このデータを処理するためにPHP関数に渡していますか?

JSON出力を制限している独自の仕様でこれを処理する新しいコントローラを作成できます。サードパーティ製のコントローラの良い例はここにあります: wordpress jsonのカスタム分類法の問題

あるいは、私が時々行っていた、JSON出力をPHP変数に渡してデコードし、特定のデータを新しい配列にフィルタリングして、その配列をそのまま使用するというアプローチが必要な場合は、 JSON形式にエンコードし直します。これの良い例です(私のプロジェクトの1つから直接切り取り、貼り付け、および再編成されるので、使用するコードよりも疑似コードが多いです)。

$json = bbtf_feed_cache( '/api/get_recent_posts/?count=-1&post_type=highline_gallery', 'artists_jsonp' );

if( is_array( $json ) && ! empty( $json ) ) {
    $object  = $json['posts'];
    $artists = array();

    foreach( $object as $item ) {
        $artists[] = array( 'label' => $item['title_plain'], 'value' => $item['title_plain'], 'slug' => $item['slug'], 'id' => $item['id'] );
    }

    $json = json_encode( $artists );    
}

これが役立つかどうか私に知らせてください...

2
moimikey

複数のカスタムサイズを使用しているときにフィードの大部分を占める添付ファイル/画像を制限したい場合は、プラグイン作成者が提供するフィルタを使用して特定の添付ファイルサイズを削除できます。

add_filter('json_api_encode', 'my_encode_attachments');

function my_encode_attachments($response) {
  if (isset($response['posts'])) {
    foreach ($response['posts'] as $post) {
        foreach ($post->attachments as $attachment){
            unset($attachment->images['full']);
            unset($attachment->images['thumbnail']);
            unset($attachment->images['medium']);
            unset($attachment->images['large']);
            unset($attachment->images['bones-thumb-300']);
            unset($attachment->images['bones-thumb-600']);
            unset($attachment->images['post-thumbnail']);
            unset($attachment->images['vendor-thumb']);
            unset($attachment->images['0']);
        }
    }
  } 
  return $response;
}
0
Adam Munns