'null-instagram-feed', 'description' => esc_html__('Displays your latest Instagram photos', 'canopus')) ); } function widget($args, $instance){ extract($args, EXTR_SKIP); $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); $username = empty($instance['username']) ? '' : $instance['username']; $limit = empty($instance['number']) ? 6 : $instance['number']; $size = empty($instance['size']) ? 'large' : $instance['size']; $target = empty($instance['target']) ? '_blank' : $instance['target']; $layout = empty($instance['layout']) ? 'simple' : $instance['layout']; $auto_play = empty($instance['auto_play']) ? 'false' : intval($instance['auto_play']); echo (isset($before_widget)) ? ($before_widget) : ''; if(!empty($title)){ echo balanceTags($before_title . $title . $after_title); } do_action('canopus_before_widget', $instance); if($username!==''){ $media_array = $this->scrape_instagram($username, $limit); if (is_wp_error($media_array)) { echo balanceTags($media_array->get_error_message()); }else{ // filter for images only? if ($images_only = apply_filters('canopus_images_only', FALSE)){ $media_array = array_filter($media_array, array($this, 'images_only')); } // filters for custom classes $ulclass = esc_attr(apply_filters('canopus_list_class', 'instagram-pics instagram-size-' . $size)); $liclass = esc_attr(apply_filters('canopus_item_class', '')); $aclass = esc_attr(apply_filters('canopus_a_class', '')); $imgclass = esc_attr(apply_filters('canopus_img_class', '')); if($layout==='carousel'){ $ulclass.=' owl-carousel'; wp_enqueue_script('owl-carousel'); } ?>
', $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.', 'canopus')); } 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']; } else { return new WP_Error('bad_json_2', esc_html__('Instagram has returned invalid data.', 'canopus')); } if (!is_array($images)){ return new WP_Error('bad_array', esc_html__('Instagram has returned invalid data.', 'canopus')); } $instagram = array(); foreach ($images as $image) { $image=$image['node']; $image['small']=$image['thumbnail']=$image['large']=$image['thumbnail_src'] = preg_replace("/^https:/i", "", $image['thumbnail_src']); $image['display_src'] = preg_replace("/^https:/i", "", $image['display_url']); if(isset($image['thumbnail_resources'])){ foreach($image['thumbnail_resources'] as $th_res){ /* sizes 150,240,320,480,640 */ switch (intval($th_res['config_width'])){ case 150: $image['thumbnail']=$th_res['src'];break; case 320: $image['small'] =$th_res['src'];break; } } } if ($image['is_video']) { $type = 'video'; } else { $type = 'image'; } $caption = esc_html__('Instagram Image', 'canopus'); if (!empty($image['caption'])) { $caption = $image['caption']; } $instagram[] = array( 'description' => $caption, 'link' => '//instagram.com/p/' . $image['shortcode'], 'time' => $image['taken_at_timestamp'], 'comments' => $image['edge_media_to_comment']['count'], 'likes' => $image['edge_media_preview_like']['count'], 'thumbnail' => $image['thumbnail'], 'small' => $image['small'], 'large' => $image['large'], 'original' => $image['display_src'], 'type' => $type ); } // do not set an empty transient - should help catch private or empty accounts if (!empty($instagram)) { $instagram = serialize($instagram); set_transient('instagram-media-5-' . sanitize_title_with_dashes($username), $instagram, apply_filters('canopus_instagram_cache_time', HOUR_IN_SECONDS * 2)); } } if (!empty($instagram)) { $instagram = unserialize($instagram); return array_slice($instagram, 0, $slice); } else { return new WP_Error('no_images', esc_html__('Instagram did not return any images.', 'canopus')); } } function images_only($media_item) { if ($media_item['type'] == 'image'){return true;} return false; } } }