Usar la API de Instagram con PHP

// Limite de post a mostrar, si no se indica se muestran 4 por default $limit = 8;

function getImages( $limit = 4 ){

$user_id       = '5479XXXX';
$access_token  = '5479XXXX.XXXXXXX.6b950d5f7c6a463d96b8b3e9265XXXX';
$item_resource = 'userid';
$hashtag       = '';
$limit         = $limit;

if (!$user_id || !$access_token) {
    echo '<p class="alert alert-warning">NO HAY INFORMACIÓN COMPLETA</p>';
    return;
}

if( $item_resource == 'hashtag' && $hashtag) {
    $api = "https://api.instagram.com/v1/tags/". $hashtag  ."/media/recent/?access_token=" . $access_token . "&count=". $limit;
} else {
    $api = "https://api.instagram.com/v1/users/". $user_id  ."/media/recent/?access_token=" . $access_token . "&count=". $limit;
}

if( ini_get('allow_url_fopen') ) {
    $images = @file_get_contents($api);
    @file_put_contents($cache_file, $images, LOCK_EX);
} else {
    $images = curl($api);
}

$json = json_decode($images);
if(isset($json->data)) {
    return $json->data;
}

return array();

}

function curl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $data = curl_exec($ch); curl_close($ch); return $data; }​ Este código simplemente nos regresará un array con los datos de nuestros post. Aquí lo que debemos cambiar son los siguientes campos:

// Llamamos al archivo que creamos anteriormente, si usaste otro nombre cambialo aquí
include_once "instagram.php";

$items = getImages($limit);
$total_items = count($items);

if ( $total_items <= 0 ) {
    
    $output = 'No hay publicaciones a mostrar';

} else {
    $output = '<div class="row">';

    for ($i=0; $i < $limit; $i++) {
        // break if total items less than count
        if($i == $total_items){
            break;
        }

        $output .= '<div class="col-6 col-md-3 pb-3">';
        $output .= (!empty($items[$i]->images->standard_resolution->url)) ? '<a class="sppb-instagram-gallery-btn" href="' . $items[$i]->link . '" target="_blank">' : '';
        $output .= '<div class="addon-instagram-item-wrap">';

        $output .= '<div class="addon-instagram-image-wrap">';
        $output .= '<img class="instagram-image img-fluid" src="' . $items[$i]->images->standard_resolution->url . '" alt="">';
        $output .= '</div>';
        
        $output .= '</div>';
        
        $output .= (!empty($items[$i]->images->standard_resolution->url)) ? '</a>' : '';
        $output .= '</div>';

        }
    $output .= '</div>';
}

echo $output;    

?>​ Y listo, esto te deberá mostrar los últimos POST de tu cuenta de Instagram en tu sitio, el código que puse te genera un row (Etiqueta de fila de Bootstrap), por lo que podría ser conveniente que el código anterior lo encierres en una etiqueta container para darle un mejor formato y mostrarlo como un grid. Si requieres otro tipo de despliegue de los POST puedes ver el código y ver que no es tan difícil, solo habría que modificar la variable $output que se va generando dentro del for. En este caso se crean columnas con las clases col-6 col-md-3 pb-3.También debes saber que la variable $items trae mucha más información de los POST que la utilizada en este ejemplo, pero te comente, trate de ser lo más practico y simple.Un punto importante a destacar es que Instagram ha anunciado que eliminará este tipo de consultas próximamente, por lo que si el código deja de funcionar podría ser por ese motivo, más adelante intentare subir un ejemplo con el nuevo método que propone la gente de Facebook para este mismo objetivo.Por lo pronto te sugiero que me sigas tanto en Twitter como en Youtube para estar informado de próximos artículos.Twitter: @Javi_Mata

Si este artículo te pareció interesante te invito a seguirme o compartir mi contenido