it-swarm.com.de

Helfen Sie mit 4.6. Antwortobjekt für Anhänge im JSON-API-Plugin

Ich bin ein großer Fan des JSON API Plugins. Der Entwickler hat einen tollen Job gemacht und ich danke ihm sehr. Ich lerne, wie man mit json und jquery arbeitet und versuche, die Informationen, die ich von einer Ajax-Anfrage erhalte, einzuschränken. Ich war in der Lage, die Optionen include und custom field erfolgreich zu verwenden, aber AMD hat das Verständnis von 4.6 ein wenig verkürzt. Anlage Antwortobjekt. Gibt es eine Möglichkeit, das Ergebnis so einzuschränken, dass nur Daumenbilder angezeigt werden? Wenn ja, kann jemand ein Beispiel für die Syntax angeben. Ich bin nicht sicher, wie ich diese Objekte in der Abfragezeichenfolge ansprechen soll. Jede Hilfe wäre großartig. Lassen Sie mich wissen, wenn ich etwas klären muss.

Ich konnte mein Ergebnis mit der folgenden Anforderungs-URL eingrenzen: /?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/ Plugin-Autor: http://profiles.wordpress.org/users/dphiffer/

Grüße, Mitentwickler von WordPress

7
generalchaos

fügen Sie in Ihrer Themes-Funktionsdatei hinzu:

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

Fügen Sie dann in Ihrer Theme-Index-Datei Folgendes in die has-Post-Schleife ein:

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

Wenn Sie jetzt Ihren JSON aufrufen, sollte ein zusätzliches Feld namens Thumbnail angezeigt werden.

2
Jerome

Ich denke, es hängt wirklich alles davon ab, um welches Problem es bei der Einschränkung dieser Informationen geht. Möchten Sie nicht, dass diese bestimmten Daten angezeigt werden? Möchten Sie nicht so viele Daten durchlaufen? Möchten Sie diese Daten über eine $ .getJSON () - Anforderung weiterleiten? Übergeben Sie diese Daten an eine PHP -Funktion, um damit umzugehen?

Sie können einen neuen Controller mit Ihrer eigenen Spezifikation erstellen, um die JSON-Ausgabe zu beschränken. Ein gutes Beispiel für einen Controller eines Drittanbieters ist hier: Problem mit der benutzerdefinierten Taxonomie von WordPress JSON .

Oder wenn Sie einen Ansatz wollen, den ich manchmal gemacht habe, bei dem Sie die JSON-Ausgabe an eine PHP -Variable übergeben, sie dekodieren, bestimmte Daten in ein neues Array filtern und dieses Array entweder so wie es ist oder wie es ist verwenden -codiere es zurück in das JSON-Format. Ein besseres Beispiel dafür (eher Pseudo-Code als Code, den Sie verwenden können, da er direkt aus einem meiner Projekte ausgeschnitten, eingefügt und neu organisiert wird):

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

Lassen Sie mich wissen, ob das hilft...

2
moimikey

Wenn Sie die Anzahl der Anhänge/Bilder begrenzen möchten, die einen Großteil des Feeds ausmachen, wenn Sie mehrere benutzerdefinierte Größen verwenden, können Sie mithilfe des vom Plug-in-Autor bereitgestellten Filters bestimmte Anhangsgrößen entfernen

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