Trợ giúp với 4.6. Đối tượng phản hồi tệp đính kèm trong plugin JSON API


7

Tôi là một fan hâm mộ lớn của plugin JSON API. Nhà phát triển đã làm một công việc tuyệt vời và tôi cảm ơn anh ấy rất nhiều. Tôi đang học cách làm việc với json và jquery và đang cố gắng hạn chế thông tin tôi nhận được từ yêu cầu ajax. Tôi đã có thể sử dụng các tùy chọn trường bao gồm và tùy chỉnh thành công nhưng tôi hiểu được một chút ngắn gọn 4.6. Đối tượng phản hồi đính kèm. Có cách nào để giới hạn kết quả chỉ cung cấp hình ảnh ngón tay cái? Nếu vậy, bất cứ ai cũng có thể cung cấp một ví dụ về cú pháp. Tôi không chắc làm thế nào để giải quyết các đối tượng này trong chuỗi truy vấn. Bất cứ sự giúp đỡ nào cũng thật sự tuyệt vời. Hãy cho tôi biết nếu tôi cần làm rõ bất cứ điều gì.

Tôi đã thu hẹp kết quả của mình với url yêu cầu này: /?json=get_recent_posts&include=title,url,categories,thumbnail,custom_fields&custom_fields=field1'

url url: http://wordpress.org/extend/plugins/json-api/other_notes/ tác giả plugin: http://profiles.wordpress.org/users/dphiffer/

Trân trọng, Nhà phát triển WordPress


1
Bạn thực sự nên cố gắng liên hệ trực tiếp với tác giả plugin. Anh ấy sẽ đủ điều kiện hơn để hỗ trợ plugin này hơn chúng ta.
EAMann

Câu trả lời:


2

Tôi nghĩ rằng tất cả phụ thuộc vào vấn đề hạn chế thông tin này là gì. Bạn không muốn dữ liệu cụ thể này bị lộ? Bạn không muốn lặp lại quá nhiều dữ liệu? Bạn có ý định chuyển dữ liệu này thông qua yêu cầu $ .getJSON () không? Bạn đang truyền dữ liệu này đến một hàm PHP để xử lý nó?

Bạn có thể tạo một bộ điều khiển mới để xử lý việc này với thông số kỹ thuật của riêng bạn, nơi bạn đang giới hạn đầu ra JSON của mình. Một ví dụ điển hình của bộ điều khiển bên thứ ba có ở đây: vấn đề phân loại tùy chỉnh wordpress json .

Hoặc nếu bạn muốn một cách tiếp cận mà đôi khi tôi đã thực hiện, nơi bạn chuyển đầu ra JSON cho một biến PHP, giải mã nó, lọc dữ liệu cụ thể sang một mảng mới và sử dụng mảng đó như là, mã hóa lại nó thành JSON định dạng. Một ví dụ tốt hơn về điều này (mã giả nhiều hơn mã để bạn sử dụng, khi nó được cắt, dán và sắp xếp lại, trực tiếp từ một trong các dự án của tôi):

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

Hãy cho tôi biết nếu điều này sẽ giúp...


2

trong tập tin chức năng chủ đề của bạn thêm:

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

Sau đó, trong tệp chỉ mục chủ đề của bạn thêm vào sau đây trong vòng lặp có bài:

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

Bây giờ khi bạn gọi JSON của bạn, một trường bổ sung gọi là hình thu nhỏ sẽ được hiển thị.


0

Nếu bạn đang tìm cách giới hạn các tệp đính kèm / hình ảnh chiếm phần lớn nguồn cấp dữ liệu khi sử dụng nhiều kích thước tùy chỉnh, bạn có thể sử dụng bộ lọc do tác giả plugin cung cấp để xóa các kích thước tệp đính kèm nhất định

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

1
Chỉ cần đặt các giá trị trong "UI UI" »" Cài đặt "» "Phương tiện" thành 0và chúng sẽ bị bỏ qua khi tạo.
kaiser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.