Home › Forums › Basel support forum › Instagram gallery – Showing photos by # instead by username
Instagram gallery – Showing photos by # instead by username
- This topic has 1 reply, 2 voices, and was last updated 6 years, 8 months ago by Artem Temos.
-
AuthorPosts
-
March 20, 2018 at 6:57 pm #47614
EstefaniaParticipantI am very sorry, but I have to star again this topic:(
Today I have updated Basel theme to V4.
It looks like everything were fine with this Instagram gallery. It showed photos by username.
But this afternoon, the gallery was changed again, showing photos by #.2 questions:
– have I to leave the code you gave to us in the functions.php in child-theme?
– Is there a king of time for update photos from Instagram?Thanks a lot in advance!
EstefanÃa.Code:
/* Update theme API Instagram*/
function basel_scrape_instagram( $username, $slice = 9 ) {
$username = strtolower( $username );
$by_hashtag = ( substr( $username, 0, 1 ) == ‘#’ );
$transient_name = ‘instagram-media-new1-‘ . sanitize_title_with_dashes( $username );
$instagram = get_transient( $transient_name );if ( false === $instagram ) {
$request_param = ( $by_hashtag ) ? ‘explore/tags/’ . substr( $username, 1) : trim( $username );
$remote = wp_remote_get( ‘https://instagram.com/’. $request_param );if ( is_wp_error( $remote ) ) {
return new WP_Error( ‘site_down’, esc_html__( ‘Unable to communicate with Instagram.’, ‘basel’ ) );
}if ( 200 != wp_remote_retrieve_response_code( $remote ) ) {
return new WP_Error( ‘invalid_response’, esc_html__( ‘Instagram did not return a 200.’, ‘basel’ ) );
}$shards = explode( ‘window._sharedData = ‘, $remote[‘body’] );
$insta_json = explode( ‘;</script>’, $shards[1] );
$insta_array = json_decode( $insta_json[0], TRUE );if ( ! $insta_array ){
return new WP_Error( ‘bad_json’, esc_html__( ‘Instagram has returned invalid data.’, ‘basel’ ) );
}if ( isset( $insta_array[‘entry_data’][‘ProfilePage’][0][‘graphql’][‘user’][‘edge_owner_to_timeline_media’][‘edges’] ) ) {
$images = $insta_array[‘entry_data’][‘ProfilePage’][0][‘graphql’][‘user’][‘edge_owner_to_timeline_media’][‘edges’];
} elseif( $by_hashtag && isset( $insta_array[‘entry_data’][‘TagPage’][0][‘graphql’][‘hashtag’][‘edge_hashtag_to_media’][‘edges’] ) ) {
$images = $insta_array[‘entry_data’][‘TagPage’][0][‘graphql’][‘hashtag’][‘edge_hashtag_to_media’][‘edges’];
} else {
return new WP_Error( ‘bad_json_2’, esc_html__( ‘Instagram has returned invalid data.’, ‘basel’ ) );
}if ( ! is_array( $images ) ) {
return new WP_Error( ‘bad_array’, esc_html__( ‘Instagram has returned invalid data.’, ‘basel’ ) );
}$instagram = array();
foreach ( $images as $image ) {
$image = $image[‘node’];
$caption = esc_html__( ‘Instagram Image’, ‘basel’ );
if ( ! empty( $image[‘edge_media_to_caption’][‘edges’][0][‘node’][‘text’] ) ) $caption = $image[‘edge_media_to_caption’][‘edges’][0][‘node’][‘text’];$image[‘thumbnail_src’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_src’] );
$image[‘thumbnail’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_resources’][0][‘src’] );
$image[‘medium’] = preg_replace( “/^https:/i”, “”, $image[‘thumbnail_resources’][2][‘src’] );
$image[‘large’] = $image[‘thumbnail_src’];$type = ( $image[‘is_video’] ) ? ‘video’ : ‘image’;
$instagram[] = array(
‘description’ => $caption,
‘link’ => ‘//instagram.com/p/’ . $image[‘shortcode’],
‘comments’ => $image[‘edge_media_to_comment’][‘count’],
‘likes’ => $image[‘edge_liked_by’][‘count’],
‘thumbnail’ => $image[‘thumbnail’],
‘medium’ => $image[‘medium’],
‘large’ => $image[‘large’],
‘type’ => $type
);
}// do not set an empty transient – should help catch private or empty accounts
if ( ! empty( $instagram ) ) {
$instagram = base64_encode( maybe_serialize( $instagram ) );
set_transient( $transient_name, $instagram, apply_filters( ‘null_instagram_cache_time’, HOUR_IN_SECONDS * 2 ) );
}
}
if ( ! empty( $instagram ) ) {
$instagram = maybe_unserialize( base64_decode( $instagram ) );
return array_slice( $instagram, 0, $slice );
} else {
return new WP_Error( ‘no_images’, esc_html__( ‘Instagram did not return any images.’, ‘basel’ ) );
}
}Attachments:
You must be logged in to view attached files.March 21, 2018 at 7:42 am #47702
Artem TemosKeymasterHi,
Please, describe us your problem in a bit more details. Attach some screenshots and provide us a list of steps how to reproduce it on your website.
Thank you in advance.
-
AuthorPosts
- You must be logged in to create new topics. Login / Register