我正在做项目,我正在尝试将摄影师的 Flickr 帐户与他的 Wordpress 网站集成。这个想法是将 Wordpress 网站与他的 flickr 同步。
我正在使用 Flickr API 获取他的图片 URLS、描述、标签和集合并显示所有内容。问题是每次访问我都必须通过整个 API 响应并解析它。必须提取所有链接、标签、描述等。
我正在寻找一种将此 API 响应(XML 或 JSON)“导入”到 wordpress 数据库并使用此数据的方法。一旦他更新了他的 flickr 帐户上的内容,我就可以选择更新数据库(或者可能只是数据库中的一个表)。此更新不需要是自动的。
最佳答案
以下只是一个概念证明,它使用 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']
);
}
我会将这些结果的处理留给读者。
建议:
- 设置一个 cron 作业来提取信息并做你的事情。使用此作为引用:Website widget to display Apple App store price drops?
- 创建一个选项页面并使用缩略图、扩展信息和按钮显示结果以调度一些操作(图像端加载、创建新帖子等),参见 here和 here .
WordPress StackExchange 充满了不错的片段和技巧。
关于xml - 将 JSON 或 XML API 响应保存到 Wordpress 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173971/