Semplice script PHP in ambiente WordPress (ma può essere usato anche in altri ambiti usando un approccio diverso alla gestione della cache dei risultati) per visualizzare un numero prederminato di immagini casuali da un album pubblico facendo uso delle API di Facebook.

Innanzitutto vediamo come estrarre l’id univoco dell’album stesso. Dalla pagina corrispondente visualizzare l’url ed estrarne l’id come segue:

https://www.facebook.com/media/set/?set=a.{album_id}.xxxxx.xxxxxxxxxxxxxxx

In alternativa è possibile estrarre l’album ID usando le API stesse ma per questo vi rimando alla documentazione ufficiale.

Una volta ottenuto il codice dell’album è sufficiente richiamare la funzione che segue:

/**
 * GET_FACEBOOK_GALLERY
 * Visualizza n fotografie casuali di un album di facebook
 *
 * @param int $album_id   ID dell'album di facebook
 * @param int $pics       Numero di fotografie
 * @param int $expire     Validità della cache in secondi
 */

function get_facebook_gallery( $album_id, $pics = 3, $expire = 86400 ) {

    // Verifico che il risultato non sia gia in cache
    if ( false === ( $fb_images = get_transient( 'facebook_images' ) ) ) {

        // Url delle API
        $url = 'https://graph.facebook.com/'. $album_id .'/photos/?limit=0';

        // Verifico che le API siano online
        if ( false != ( $json_file = @file_get_contents( $url ) ) ) {

            // Leggo il json e metto tutto in una variabile
            $fb_images = json_decode( $json_file, true );
            $fb_images = $fb_images['data'];

            // Salvo i dati in cache
            set_transient( 'facebook_images', $fb_images, $expire );

        } else {

            // Se le API non sono raggiungibili ritorno false   
            return false;

        }
    }

    // Randomizzo le immagini
    shuffle( $fb_images );

    // e ne estraggo le prime 3
    for ( $i = 0; $i < $pics; $i++ ) {
        echo '<img src="'. $fb_images[$i]['images'][5]['source'] .'">';
    }

}

Una nota doverosa sulla dimensione delle immagini, è possibile visualizzarne di diverse dimensioni preimpostate da facebook, nello specifico nel frammento:

$fb_images[$i]['images'][5]['source']

Il numero 5 sta per larghezza 320px, cambiate il 5 con un valore da 0 ad 8 (dal più grande al più piccolo) per le altre dimensioni.

Buon divertimento

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *