在自定义WordPress插件中使用flickr API

时间:2013-10-17 作者:Designer 17

我目前正在尝试将flickr api添加到我的自定义wordpress插件中。。。我失败了:(我试图使用本教程《Flickr API入门》,学习基本的代码结构,然后我打算参考Flickr的app garden获取文档,以实现我的愿望;但是,它不起作用。

我所拥有的。。。我构建了一个新的PHP文件,将其命名为“class.flickr.PHP”,并添加了教程中列出的代码。。。

<?php

    class Flickr{

    private $flickr_key;
    private $flickr_secret;
    private $format = \'json\';

    // Setting up flickr_key and flickr_secret
    public function __construct( $flickr_key ) {

        $this->api_key_shown_here = $flickr_key;
    }

    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\';

        // 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

} 
然后尝试在我的页面模板(与“class.flickr.php”位于同一文件夹)中调用上述方法,使用以下代码。。。

<?php // Flickr search photos test

require_once( \'class.flickr.php\' );

$flickr = new Flickr( $flickr_key );

$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 }                 
}
但是,唉,我得到的只是一个空白屏幕。任何帮助都将不胜感激

1 个回复
最合适的回答,由SO网友:Morgan Estes 整理而成

我马上就看到两个会引起问题的问题:

$this->myApiKey = $flickr_key;
$thix->myApiSecret = $flickr_secret;
  1. myApiKeymyApiSecret 都不在您的代码中,所以在这里设置它们没有任何作用。他们应该是$this->flickr_key$this->flickr_secret.$thix 到$this 试一试

结束