2011-08-24 53 views
2

我正在開發項目,並試圖將攝影師的Flickr帳戶與他的Wordpress網站進行整合。這個想法是將Wordpress網站與他的flickr同步。將JSON或XML API響應保存到Wordpress數據庫

我使用Flickr API來獲取他的picures URLS,描述,標籤和設置並顯示everyting。問題在於,對於每次訪問,我都必須通過整個API響應並解析它。必須提取所有的鏈接,標籤,說明等

我正在尋找一種方法來將此API響應(XML或JSON)「導入」到wordpress數據庫並使用此數據。一旦他更新了他的flickr賬戶中的內容,我就可以選擇更新數據庫(或者可能只是數據庫中的一張表)。此更新不需要是自動的。

回答

1

以下只是一個概念證明,並在儀表板中創建了一個菜單項,並帶有Flickr API響應的結果。

add_action('admin_menu', function() 
{ 
    add_menu_page( 
     'Flicker', 
     'Flicker', 
     'add_users', 
     'fck_admin', 
     'consult_flickr_api_so_7173971', 
     'http://i.stack.imgur.com/s2ons.png', 
     2 
    ); 
}); 

function consult_flickr_api_so_7173971() 
{ 
    $api_key = 'YOUR-KEY'; 
    $secret_key = 'YOUR-SECRET'; // not needed for public data 
    $uid = 'USER-ID-TO-CONSULT'; 
    $url = 'https://api.flickr.com/services/rest/?&method=flickr.people.getPublicPhotos&api_key=' 
     . $api_key 
     . '&user_id=' 
     . $uid 
     . '&format=json&nojsoncallback=1&per_page=15'; // maximum 500 
    $flickr = wp_remote_get($url, array('timeout' => 120, 'httpversion' => '1.1')); 
    if ($flickr['response']['code'] == '200') 
    {   
     $flickr_array = json_decode($flickr['body'], true); 
     foreach($flickr_array['photos']['photo'] as $photo) 
     { 
      echo '<h2>' . $photo['title'] . '</h2>'; 
      get_flickr_photo_so_7173971($photo['id']); 
     } 
    } 
} 

/** 
http://www.flickr.com/services/api/ 
Useful Methods 
- getExif 
- getInfo 
- getSizes 
*/ 
function get_flickr_photo_so_7173971($photo_id, $method = 'getSizes') 
{ 
    $api_key = 'YOUR-KEY'; 
    $flickr = wp_remote_get( 
     'https://api.flickr.com/services/rest/?&method=flickr.photos.' 
     . $method 
     . '&api_key=' 
     . $api_key 
     . '&photo_id=' 
     . $photo_id 
     . '&format=json&nojsoncallback=1', 
     array(
      'timeout' => 120, 
      'httpversion' => '1.1' 
     ) 
    ); 

    if ($flickr['response']['code'] == '200') 
    { 
     $flickr_array = json_decode($flickr['body'], true);   
     $no_print = true; 
     foreach($flickr_array['sizes']['size'] as $size) 
     { 
      if($size['label'] == 'Medium') { 
       print_photo_so_7173971($size); 
       $no_print = false; 
      } 
     } 
     // No medium size was found, just print the first one 
     if($no_print) 
     { 
      print_photo_so_7173971($flickr_array['sizes']['size'][0]); 
     } 
    } 
} 

function print_photo_so_7173971($size) 
{ 
    printf( 
     '<img src="%s" width="%s" height="%s" /><br />', 
     $size['source'], 
     $size['width'], 
     $size['height'] 
    ); 
} 

我將離開這些結果給讀者的操縱。

建議:

WordPress StackExchange充滿了很好的片段和技巧。

相關問題