defaults = array( 'title' => __( 'Instagram', 'automobile' ), 'username' => '', 'layout' => 'one-column', 'number' => 6, 'size' => 'thumbnail', 'target' => 0, 'link' => __( 'View on Instagram', 'automobile' ), ); $widget_ops = array( 'classname' => 'ct-instagram ctninstagram ctfeaturedpostpageimage', 'description' => __( 'Displays your latest Instagram photos', 'automobile' ), ); $control_ops = array( 'id_base' => 'ct-instagram', ); parent::__construct( 'ct-instagram', // Base ID __( 'CT: Instagram', 'automobile' ), // Name $widget_ops, $control_ops ); } function form( $instance ) { $instance = wp_parse_args( (array) $instance, $this->defaults ); ?>

id="get_field_id( 'target' ); ?>" name="get_field_name( 'target' ); ?>" />

defaults ); echo $args['before_widget']; // Set up the author bio if ( ! empty( $instance['title'] ) ) { echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $args['after_title']; } $username = empty( $instance['username'] ) ? '' : $instance['username']; $number = empty( $instance['number'] ) ? 9 : $instance['number']; $size = empty( $instance['size'] ) ? 'large' : $instance['size']; $link = empty( $instance['link'] ) ? '' : $instance['link']; $target = '_self'; if ( $instance['target'] ) { $target = '_blank'; } if ( '' != $username ) { $media_array = $this->scrape_instagram( $username, $number ); 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( 'automobile_images_only', FALSE ) ) { $media_array = array_filter( $media_array, array( $this, 'images_only' ) ); } ?>

', $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.', 'automobile' ) ); } if ( isset( $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes'] ) ) { $images = $insta_array['entry_data']['ProfilePage'][0]['user']['media']['nodes']; } else { return new WP_Error( 'bad_json_2', esc_html__( 'Instagram has returned invalid data.', 'automobile' ) ); } if ( ! is_array( $images ) ) { return new WP_Error( 'bad_array', esc_html__( 'Instagram has returned invalid data.', 'automobile' ) ); } $instagram = array(); foreach ( $images as $image ) { $image['thumbnail_src'] = preg_replace( '/^https?\:/i', '', $image['thumbnail_src'] ); $image['display_src'] = preg_replace( '/^https?\:/i', '', $image['display_src'] ); // handle both types of CDN url if ( (strpos( $image['thumbnail_src'], 's640x640' ) !== false ) ) { $image['thumbnail'] = str_replace( 's640x640', 's160x160', $image['thumbnail_src'] ); $image['small'] = str_replace( 's640x640', 's320x320', $image['thumbnail_src'] ); } else { $urlparts = wp_parse_url( $image['thumbnail_src'] ); $pathparts = explode( '/', $urlparts['path'] ); array_splice( $pathparts, 3, 0, array( 's160x160' ) ); $image['thumbnail'] = '//' . $urlparts['host'] . implode('/', $pathparts); $pathparts[3] = 's320x320'; $image['small'] = '//' . $urlparts['host'] . implode('/', $pathparts); } $image['large'] = $image['thumbnail_src']; if ( $image['is_video'] == true ) { $type = 'video'; } else { $type = 'image'; } $caption = __( 'Instagram Image', 'automobile' ); 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'], '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 ) ) { set_transient( 'instagram-a3-'.sanitize_title_with_dashes( $username ), $instagram, apply_filters( 'automobile_instagram_cache_time', HOUR_IN_SECONDS*2 ) ); } } if ( ! empty( $instagram ) ) { return array_slice( $instagram, 0, $slice ); } else { return new WP_Error( 'no_images', esc_html__( 'Instagram did not return any images.', 'automobile' ) ); } } function images_only( $media_item ) { if ( $media_item['type'] == 'image' ) { return true; } return false; } } //From Codex: https://codex.wordpress.org/Widgets_API add_action('widgets_init', create_function('', 'return register_widget("automobile_instagram_widget");') );