Hilfe bei 4.6. Anhang Antwortobjekt im JSON API Plugin

7

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 zu begrenzen, die ich von einer Ajax-Anfrage zurückerhalte. Ich war in der Lage, die Optionen include und benutzerdefinierte Felder erfolgreich zu verwenden, habe aber ein wenig Verständnis 4.6. Anhang Antwortobjekt. Gibt es eine Möglichkeit, das Ergebnis so einzuschränken, dass nur Daumenbilder bereitgestellt werden? Wenn ja, kann jemand ein Beispiel für die Syntax geben. Ich bin nicht sicher, wie ich diese Objekte in der Abfragezeichenfolge adressieren soll. Jede Hilfe wäre großartig. Lassen Sie mich wissen, wenn ich etwas klären muss.

Ich habe es geschafft, mein Ergebnis mit dieser Anforderungs-URL einzugrenzen: /?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

Generalchaos
quelle
1
Sie sollten wirklich versuchen, den Plugin-Autor direkt zu kontaktieren. Er wird weitaus qualifizierter sein, dieses Plugin zu unterstützen als wir.
EAMann

Antworten:

2

Ich denke, es hängt wirklich alles davon ab, was das Problem mit der Einschränkung dieser Informationen ist. Möchten Sie nicht, dass diese bestimmten Daten verfügbar gemacht werden? Möchten Sie nicht so viele Daten durchlaufen? Beabsichtigen Sie, diese Daten über eine $ .getJSON () -Anforderung weiterzuleiten? Übergeben Sie diese Daten an eine PHP-Funktion, um sie zu verarbeiten?

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

Oder wenn Sie einen Ansatz wünschen, den ich manchmal gemacht habe, bei dem Sie die JSON-Ausgabe an eine PHP-Variable übergeben, dekodieren, bestimmte Daten in ein neues Array filtern und dieses Array entweder unverändert verwenden oder es erneut in JSON codieren Format. Ein besseres Beispiel dafür (mehr Pseudocode 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...

moimikey
quelle
2

Fügen Sie in Ihrer Themenfunktionsdatei Folgendes 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 Themenindexdatei 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 Miniaturansicht angezeigt werden.

Hieronymus
quelle
0

Wenn Sie die Anhänge / Bilder einschränken möchten, die bei Verwendung mehrerer benutzerdefinierter Größen einen Großteil des Feeds einnehmen, können Sie mithilfe des vom Plugin-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;
}
Adam Munns
quelle
1
Stellen Sie einfach die Werte in "Admin UI" »" Einstellungen "» "Medien" auf ein 0und sie werden bei der Erstellung übersprungen.
Kaiser