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");')
);