Php 在我的自定义wordpress插件中使用flickr
我正在尝试将flickr api添加到我的自定义插件中。。。我失败了( 我试图使用本教程来学习基本的代码结构,然后我打算参考flickr的AppGarden获取文档,以完成我想要的工作;但是,它不起作用 我所拥有的…我构建了一个新的PHP文件,将其命名为“class.flickr.PHP”,并添加了教程中列出的代码Php 在我的自定义wordpress插件中使用flickr,php,wordpress,flickr,Php,Wordpress,Flickr,我正在尝试将flickr api添加到我的自定义插件中。。。我失败了( 我试图使用本教程来学习基本的代码结构,然后我打算参考flickr的AppGarden获取文档,以完成我想要的工作;但是,它不起作用 我所拥有的…我构建了一个新的PHP文件,将其命名为“class.flickr.PHP”,并添加了教程中列出的代码 <?php class Flickr{ private $flickr_key; private $flickr_secret; private $format = 'js
<?php
class Flickr{
private $flickr_key;
private $flickr_secret;
private $format = 'json';
// Setting up flickr_key and flickr_secret
public function __construct( $flickr_key, $flickr_secret ) {
$this->myApiKey = $flickr_key;
$thix->myApiSecret = $flickr_secret;
}
public function searchPhotos( $query = '', $tags = '' ){ // Begin searchPhotos
$urlencoded_tags = array();
if ( !empty( $args )) {
$tags_r = explode( ',', $tags );
foreach ( $tags_r as $tag ) {
$urlencoded_tags[] = urlencode( $tag );
}
}
// Construct the url
$url = 'http://api.flickr.com/services/rest/?';
$url .= 'method=flickr.photos.search';
$url .= '&text=' . urlencode( $query );
$url .= '&tags=' . implode( ',', $urlencoded_tags );
$url .= '&sort=relevance';
$url .= '&safe_search=1';
$url .= '&content_type=4';
$url .= '&api_key=' . $this->$flickr_key;
$url .= '&format' . $this->$format;
$url .= '&per_page=10';
// Calling url using curl
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_RETURNTRANSFER => 0,
CURLOPT_TIMEOUT => 120,
CURLOPT_URL => $url,
));
if ( !curl_exec( $curl )) {
die ( 'Error: "' . curl_error( $curl ) . '" - Code: ' . curl_errno( $curl ));
}
print_r( curl_getinfo( $curl ));
// Get search results
$result = file_get_contents( $url );
// Remove the unneccessary strings that wraps the result returned from the API
$json = substr( $result, strlen( "jsonFlickrApi("), strlen( $result ) - strlen( "jsonFlickrApi(") - 1 );
$photos = array();
$data = json_decode( $json, true );
// Check if the status didn't fail
if ( $data['stat'] != 'fail' ) {
// Return only the data for the photos as that's the only thing that we need
$photos = $data['photos']['photo'];
return $photos;
} else {
return false;
}
} // end searchPhotos
}
这是我写的关于一些主机最近在file\u get\u contents
调用中变得更加严格的事情。基本上,您需要使用curl调用,而不仅仅是原始的file\u get\u contents
以下是我给出的解决这个问题的答案-它应该对您的情况有所帮助(我在这里包含了一些示例代码):
实际上,我做了更多的研究,检查了我的错误日志,现在可以通过将“$flickr=new flickr($api\u key,$api\u secret);”之类的内容更改为“$flickr=new flickr(此处显示了api\u key)”,来查看我的网站页面和这个“$url.=”&api_key=”。$this->$flickr_key;$url.=”&format.“$this->$format;”到这个“$url.=”&api_key=”。$this->flickr_key;$url.=”&format.“$this->format;”等等,但我仍然没有看到任何图像……这是否仍然与你在回答中提到的问题有关?好的,我现在编辑了我的问题,以说明如何解决这个问题我正在使用curl。我还发现我现在从flickr 100中得到一个错误:无效的API键(键的格式无效)。你看到这有什么原因吗?我现在让它从flickr中检索图像数据而没有链接…这就是为什么(我想)它们没有在屏幕上显示出来。我敏锐地发现,cURL
实际上是不必要的……这让人尴尬,但下面是答案。。。
<?php // Flickr search photos test
require_once( 'class.flickr.php' );
$flickr = new Flickr( $api_key, $api_secret);
$results = $flickr->searchPhotos( $query, $tags );
if ( !empty( $results )) {
foreach( $results as $photo ) {
$src = "http://farm" . $photo['farm'] . ".static.flickr.com/" . $photo['server'] . '/' . $photo['id'] . '_' . $photo['secret'] . '_m.jpg';
?>
<img src="<?php echo $src; ?>" alt="<?php echo $photo['title']; ?>" />
<?php }
}