Home › Forums › Basel support forum › Instagram thumbnail crashes on the widget
Instagram thumbnail crashes on the widget
- This topic has 7 replies, 2 voices, and was last updated 6 years, 10 months ago by Artem Temos.
Viewing 8 posts - 1 through 8 (of 8 total)
-
AuthorPosts
-
January 14, 2018 at 9:54 pm #33478
GiulioParticipantHi there,
I just updated to last WooCommerce version, but the Instagram widget crashed. All thumbnail are not visible. I use Basel 3.6.2 and I can’t update the theme right now. Can you help me please to fix that issue?
Thanks.
January 15, 2018 at 7:43 am #33492
Artem TemosKeymasterHi,
Try to add the following PHP code snippet to the child theme functions.php file to do this
function basel_scrape_instagram($username, $slice = 9) { $username = strtolower( $username ); $by_hashtag = ( substr( $username, 0, 1) == '#' ); if ( false === ( $instagram = get_transient( 'instagram-media-new-'.sanitize_title_with_dashes( $username ) ) ) ) { $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' ) ); // old style if ( isset( $insta_array['entry_data']['UserProfile'][0]['userMedia'] ) ) { $images = $insta_array['entry_data']['UserProfile'][0]['userMedia']; $type = 'old'; // old_2 style } elseif( $by_hashtag && isset( $insta_array['entry_data']['TagPage'][0]['tag']['media']['nodes'] ) ) { $images = $insta_array['entry_data']['TagPage'][0]['tag']['media']['nodes']; $type = 'old_2'; }else if ( isset( $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes'] ) ) { $images = $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes']; $type = 'old_2'; // new style } 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']; $type = 'new'; } 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(); switch ( $type ) { case 'old': foreach ( $images as $image ) { if ( $image['user']['username'] == $username ) { $image['link'] = $image['link']; $image['images']['thumbnail'] = preg_replace( "/^http:/i", "", $image['images']['thumbnail'] ); $image['images']['standard_resolution'] = preg_replace( "/^http:/i", "", $image['images']['standard_resolution'] ); $image['images']['low_resolution'] = preg_replace( "/^http:/i", "", $image['images']['low_resolution'] ); $instagram[] = array( 'description' => $image['caption']['text'], 'link' => $image['link'], 'time' => $image['created_time'], 'comments' => $image['comments']['count'], 'likes' => $image['likes']['count'], 'thumbnail' => $image['images']['thumbnail'], 'large' => $image['images']['standard_resolution'], 'small' => $image['images']['low_resolution'], 'type' => $image['type'] ); } } break; case 'old_2': foreach ( $images as $image ) { $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']; $image['display_src'] = preg_replace( "/^https:/i", "", $image['display_src'] ); if ( $image['is_video'] == true ) { $type = 'video'; } else { $type = 'image'; } $caption = esc_html__( 'Instagram Image', 'basel' ); if ( ! empty( $image['caption'] ) ) { $caption = $image['caption']; } $instagram[] = array( 'description' => $caption, 'link' => '//instagram.com/p/' . $image['code'], 'time' => $image['date'], 'comments' => $image['comments']['count'], 'likes' => $image['likes']['count'], 'thumbnail' => $image['thumbnail'], 'medium' => $image['medium'], 'large' => $image['large'], 'original' => $image['display_src'], 'type' => $type ); } break; default: 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 ); } break; } // do not set an empty transient - should help catch private or empty accounts if ( ! empty( $instagram ) ) { $instagram = base64_encode( maybe_serialize( $instagram ) ); set_transient( 'instagram-media-new-'.sanitize_title_with_dashes( $username ), $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' ) ); } }
Regards
January 15, 2018 at 9:09 am #33500January 15, 2018 at 9:50 am #33513
Artem TemosKeymasterYou need to clear your WordPress transients on your website to see the changes.
January 15, 2018 at 9:53 am #33515
GiulioParticipantDo you mean the cache?
January 15, 2018 at 9:55 am #33516
GiulioParticipantI found that option on WP Fastest Cache. Is it sure delete all transient option?
January 15, 2018 at 10:09 am #33517
GiulioParticipantI removed them and it works. Thank you!
January 15, 2018 at 12:24 pm #33542
Artem TemosKeymasterGreat, you are welcome!
-
AuthorPosts
Viewing 8 posts - 1 through 8 (of 8 total)
- You must be logged in to create new topics. Login / Register