web-dev-qa-db-fra.com

Aide avec 4.6. Objet de réponse de pièce jointe dans le plug-in d'API JSON

Je suis un grand fan du plugin JSON API. Le développeur a fait un excellent travail et je le remercie beaucoup. J'apprends à travailler avec json et jquery et j'essaie de limiter les informations que je reçois d'une requête ajax. J'ai été en mesure d'utiliser les options d'inclusion et de champ personnalisé avec succès, mais la compréhension d'AMD est un peu courte 4.6. Objet de réponse en pièce jointe. Existe-t-il un moyen de limiter le résultat pour ne fournir que des images du pouce? Si tel est le cas, quelqu'un peut-il fournir un exemple de syntaxe. Je ne suis pas sûr de savoir comment aborder ces objets dans la chaîne de requête. Toute aide serait géniale. Faites-moi savoir si j'ai besoin de clarifier quelque chose.

J'ai réussi à affiner mon résultat avec cette URL de requête: /?json=get_recent_posts&include=title,url,categories,thumbnail,custom_fields&custom_fields=field1'

plugin url: http://wordpress.org/extend/plugins/json-api/other_notes/ auteur du plugin: http://profiles.wordpress.org/users/dphiffer/

Cordialement, Fellow WordPress Developer

7
generalchaos

dans votre fichier de fonction de thèmes, ajoutez:

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

Ensuite, dans votre fichier d’index de thème, ajoutez ce qui suit dans la boucle a post:

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

Désormais, lorsque vous appelez votre JSON, un champ supplémentaire appelé miniature devrait être affiché.

2
Jerome

Je pense que tout dépend vraiment de la question de la limitation de cette information. Ne voulez-vous pas que ces données particulières soient exposées? Ne voulez-vous pas parcourir autant de données? Souhaitez-vous transmettre ces données via une requête $ .getJSON ()? Transmettez-vous ces données à une fonction PHP pour le gérer?

Vous pouvez créer un nouveau contrôleur pour gérer cela avec vos propres spécifications, en limitant votre sortie JSON. Voici un bon exemple de contrôleur tiers: wordpress json custom taxonomy problem .

Ou si vous voulez une approche que j'ai parfois faite, où vous transmettez la sortie JSON à une variable PHP, la décodez, filtrez des données spécifiques dans un nouveau tableau et utilisez ce tableau tel quel, o re - Recodez-le au format JSON. Un meilleur exemple de ceci (plus de pseudo-code que de code à utiliser, car il est coupé, collé et réorganisé directement à partir de l'un de mes projets):

$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 );    
}

Faites-moi savoir si cela aide ...

2
moimikey

Si vous souhaitez limiter les pièces jointes/images qui occupent une grande partie du flux lorsque vous utilisez plusieurs tailles personnalisées, vous pouvez utiliser le filtre fourni par l'auteur du plug-in pour supprimer certaines tailles de pièces jointes.

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