'joy-instagram-feed', 'description' => esc_html__( 'Displays your latest Instagram photos', 'brunch-lite' ), 'customize_selective_refresh' => true ) ); } function widget( $args, $instance ) { $title = empty( $instance['title'] ) ? '' : apply_filters( 'widget_title', $instance['title'] ); $username = empty( $instance['username'] ) ? '' : $instance['username']; $limit = empty( $instance['number'] ) ? 9 : $instance['number']; $size = empty( $instance['size'] ) ? 'large' : $instance['size']; $target = empty( $instance['target'] ) ? '_self' : $instance['target']; $link = empty( $instance['link'] ) ? '' : $instance['link']; echo $args['before_widget']; if ( ! empty( $title ) ) { echo $args['before_title'] . wp_kses_post( $title ) . $args['after_title']; }; do_action( 'joy_before_widget', $instance ); if ( $username != '' ) { $media_array = $this->scrape_instagram( $username ); if ( is_wp_error( $media_array ) ) { echo wp_kses_post( $media_array->get_error_message() ); } else { // filter for images only? if ( $images_only = apply_filters( 'joy_images_only', FALSE ) ) { $media_array = array_filter( $media_array, array( $this, 'images_only' ) ); } // slice list down to required limit $media_array = array_slice( $media_array, 0, $limit ); // filters for custom classes $ulclass = apply_filters( 'joy_list_class', 'joy-instagram-pics joy-instagram-size-' . $size ); $liclass = apply_filters( 'joy_item_class', '' ); $aclass = apply_filters( 'joy_a_class', '' ); $imgclass = apply_filters( 'joy_img_class', '' ); //if ($size == 'tiny') { $size = 'thumbnail'; } //if ($size == '4cols' || $size == '3cols' || $size == '2cols' || $size == '1col') { $size = 'large'; //} ?>
'; } } $linkclass = apply_filters( 'joy_link_class', 'clear' ); if ( $link != '' ) { ?>

esc_html__( 'Instagram', 'brunch-lite' ), 'username' => '', 'size' => 'large', 'link' => '', 'number' => 9, 'target' => '_blank' ) ); $title = $instance['title']; $username = $instance['username']; $number = absint( $instance['number'] ); $size = $instance['size']; $target = $instance['target']; $link = $instance['link']; ?>

', $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.', 'brunch-lite' ) ); } 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 ( 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.', 'brunch-lite' ) ); } if ( ! is_array( $images ) ) { return new WP_Error( 'bad_array', esc_html__( 'Instagram has returned invalid data.', 'brunch-lite' ) ); } $instagram = array(); foreach ( $images as $image ) { if ( true === $image['node']['is_video'] ) { $type = 'video'; } else { $type = 'image'; } $caption = __( 'Instagram Image', 'brunch-lite' ); if ( ! empty( $image['node']['edge_media_to_caption']['edges'][0]['node']['text'] ) ) { $caption = wp_kses( $image['node']['edge_media_to_caption']['edges'][0]['node']['text'], array() ); } $instagram[] = array( 'description' => $caption, 'link' => trailingslashit( '//instagram.com/p/' . $image['node']['shortcode'] ), 'time' => $image['node']['taken_at_timestamp'], 'comments' => $image['node']['edge_media_to_comment']['count'], 'likes' => $image['node']['edge_liked_by']['count'], 'thumbnail' => preg_replace( '/^https?\:/i', '', $image['node']['thumbnail_resources'][0]['src'] ), 'small' => preg_replace( '/^https?\:/i', '', $image['node']['thumbnail_resources'][2]['src'] ), 'large' => preg_replace( '/^https?\:/i', '', $image['node']['thumbnail_resources'][4]['src'] ), 'original' => preg_replace( '/^https?\:/i', '', $image['node']['display_url'] ), 'type' => $type, ); } // End foreach(). // do not set an empty transient - should help catch private or empty accounts. if ( ! empty( $instagram ) ) { $instagram = ( serialize( $instagram ) ); set_transient( 'joy-instagram-' . $transient_prefix . '-' . sanitize_title_with_dashes( $username ), $instagram, apply_filters( 'null_instagram_cache_time', HOUR_IN_SECONDS * 2 ) ); } } if ( ! empty( $instagram ) ) { return unserialize( ( $instagram ) ); } else { return new WP_Error( 'no_images', esc_html__( 'Instagram did not return any images.', 'brunch-lite' ) ); } } function images_only( $media_item ) { if ( $media_item['type'] == 'image' ) return true; return false; } }