Using flickr api in custom wordpress plugin

I'm currently trying to add flickr api to my custom wordpress plugin... and am failing. :( I was trying to use this tutorial, Getting Started With Flickr API, to learn the basic code structure and then I was going to refer to flickr's app garden for documentation to do what I'm wanting; but, it's not working.

What I have... I built a new PHP file and named it "class.flickr.php" and added the code listed in the tutorial...

?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

} 

and then tried calling the above method in my page template (which is in the same folder as "class.flickr.php"), using the following code...

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

But, alas, all I'm getting is a blank screen. Any help would be appreciated. ;)

Topic php flickr plugin-development Wordpress

Category Web


I see two issues right off the bat that are going to cause problems:

$this->myApiKey = $flickr_key;
$thix->myApiSecret = $flickr_secret;
  1. myApiKey and myApiSecret aren't in your code anywhere, so setting them here isn't doing anything. They should be $this->flickr_key and $this->flickr_secret.
  2. You have a typo in the 2nd line above. Change $thix to $this and give it a go.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.