WordPress.org

Plugin Directory


Ignore:
Timestamp:
07/04/17 09:54:49 (3 months ago)
Author:
mnmlthms
Message:

Update v1.0.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-my-instagram/trunk/inc/public/main.php

    r1675325 r1690431  
    99    class WP_My_Instagram_Main{ 
    1010 
     11        /** 
     12         * Display Feed 
     13         * @since 1.0.0 
     14         */ 
    1115        public function images_only( $media_item ) { 
    1216 
     
    1721        } 
    1822 
     23        /** 
     24         * Display Feed 
     25         * @since 1.0.0 
     26         */ 
    1927        static function display_feed( $args = array() ){ 
    2028 
     
    3139 
    3240            if( empty( $args['username'] ) ) 
    33                 echo esc_html__( 'You need to input your username', 'wp-my-instagram' ); 
    34  
    35  
    36             $media_array = WP_My_Instagram_Main::scrape_instagram( $args['username'], (int) $args['limit'] ); 
     41                echo esc_html__( 'You need to input your username.', 'wp-my-instagram' ); 
     42 
    3743            $output = ''; 
     44            $cached = false; 
     45            if( self::get_cache( $args['username'], (int) $args['limit'] ) ){ 
     46 
     47                $media_array = WP_My_Instagram_Main::scrape_instagram( $args['username'], (int) $args['limit'] ); 
     48                $cached = true; 
     49 
     50            }else{ 
     51                $media_array = array(); 
     52            } 
    3853 
    3954            if ( is_wp_error( $media_array ) ) { 
     
    4459 
    4560                // filter for images only? 
    46                 if ( $images_only = apply_filters( 'wpmi_images_only', FALSE ) ) { 
     61                if ( $images_only = apply_filters( 'wpmi_images_only', false ) ) { 
    4762                    $media_array = array_filter( $media_array, array( __CLASS__, 'images_only' ) ); 
    4863                } 
    49  
    5064                // slice list down to required limit 
    5165                $media_array = array_slice( $media_array, 0, (int) $args['limit'] ); 
    52                 $template_part = apply_filters( 'wpmi_template_part', 'wp-my-instagram/loop.php' ); 
     66                 
     67                if( !$cached ){ 
     68                    wp_enqueue_script( 'wp-my-instagram' ); 
     69                } 
    5370                ?> 
    54                 <div class="wp-my-instagram wpmi"> 
    55                     <ul class="wpmi-list wpmi-layout-<?php echo esc_attr( $args['layout'] );?>"><?php 
    56                     foreach ( $media_array as $item ) { 
    57                         // copy the else line into a new file (wp-my-instagram/loop.php) within your theme and customise accordingly 
    58                         if ( locate_template( $template_part ) != '' ) { 
    59                             include locate_template( $template_part ); 
    60                         } else { 
    61                             echo '<li class="wpmi-item"><a href="'. esc_url( $item['link'] ) .'" target="'. esc_attr( $args['target'] ) .'"><img src="'. esc_url( $item[$args['size']] ) .'"  alt="" title="'. esc_attr( $item['description'] ).'"/></a></li>'; 
    62                         } 
    63                     } 
    64                     ?> 
     71                <div id="wpmi-<?php echo esc_attr( uniqid() );?>" class="wp-my-instagram wpmi" data-args="<?php echo esc_attr( json_encode($args) );?>" data-cached="<?php echo esc_attr( $cached ? 'true' : 'false' );?>"> 
     72                    <ul class="wpmi-list wpmi-layout-<?php echo esc_attr( $args['layout'] );?>"> 
     73                        <?php 
     74                            echo self::make_items( $media_array, $args ); 
     75                        ?> 
    6576                    </ul> 
    6677                    <?php  
     
    7586            } 
    7687        } 
    77  
     88        /** 
     89         * Make items 
     90         * @since 1.0.2 
     91         */ 
     92        static function make_items( $media_array = array(), $args = array() ){ 
     93 
     94            $output = ''; 
     95            $template_part = self::get_template(); 
     96 
     97            foreach ( $media_array as $item ) { 
     98                // copy the else line into a new file (wp-my-instagram/loop.php) within your theme and customise accordingly 
     99                $output .= strtr( $template_part, array( 
     100                    '{{link}}'      => $item['link'], 
     101                    '{{target}}'    => $item['link'], 
     102                    '{{image}}'         => $item[$args['size']], 
     103                    '{{description}}'   => $item['description'], 
     104                ) ); 
     105            } 
     106 
     107            return $output; 
     108        } 
     109        /** 
     110         * Get item Template 
     111         * @since 1.0.2 
     112         */ 
     113        static function get_template(){ 
     114            $template_part_default = '<li class="wpmi-item"><a href="{{link}}" target="{{target}}"><img src="{{image}}"  alt="" title="{{description}}"/></a></li>'; 
     115            $template_part = apply_filters( 'wpmi_item_template', $template_part_default ); 
     116            if( empty( $template_part )) { 
     117                $template_part = $template_part_default; 
     118            } 
     119 
     120            return $template_part; 
     121        } 
     122        /** 
     123         * Get cache name 
     124         * @since 1.0 
     125         */ 
    78126        static function get_cache_name( $username, $limit){ 
    79127            $username = strtolower( $username ); 
     
    83131        } 
    84132        /** 
     133         * Get cache 
     134         * @since 1.0.2 
     135         */ 
     136        static function get_cache( $username, $limit){ 
     137 
     138            return get_transient( self::get_cache_name( $username, $limit ) ); 
     139        } 
     140        /** 
    85141         * Delete Cache 
    86          * @version 1.0 
     142         * @since 1.0 
    87143         */ 
    88144        static function delete_cache( $username, $limit ){ 
     
    95151        /** 
    96152         * Get Batch 
    97          * @version 1.0 
     153         * @since 1.0 
    98154         */ 
    99155        static function _get_batch( $username, $batch = 0 ){ 
     
    101157            $username = strtolower( $username ); 
    102158            $username = str_replace( '@', '', $username ); 
    103             $url = 'http://instagram.com/' . trim( $username ) . ( $batch ? "/?max_id={$batch}" : '' ); 
    104  
    105             $remote = wp_remote_get( $url ); 
     159            $url = 'https://instagram.com/' . trim( $username ) . ( $batch ? "/?max_id={$batch}" : '' ); 
     160 
     161            $remote = wp_remote_get( $url, array( 'timeout' => 120, 'sslverify' => false ) ); 
    106162 
    107163            if ( is_wp_error( $remote ) ) 
     
    111167                return new WP_Error( 'invalid_response', esc_html__( 'Instagram did not return a 200.', 'wp-my-instagram' ) ); 
    112168 
    113             $shards = explode( 'window._sharedData = ', $remote['body'] ); 
    114             $insta_json = explode( ';</script>', $shards[1] ); 
     169            $shared_data = explode( 'window._sharedData = ', $remote['body'] ); 
     170            $insta_json = explode( ';</script>', $shared_data[1] ); 
    115171            $insta_array = json_decode( $insta_json[0], TRUE ); 
    116172 
     
    178234        /** 
    179235         * Get Instagram 
    180          * @version 1.0 
     236         * @since 1.0 
    181237         * Special Thanks to Scott Evans - wp-instagram-widget 
    182238         */ 
     
    199255                    $instagram = self::_get_batch( $username, $last_id ); 
    200256 
    201                     if( $instagram ){ 
     257                    if( is_array( $instagram ) ){ 
    202258                        $last_image = end( $instagram ); 
    203259                        $last_id = !empty( $last_image['id'] ) ? $last_image['id'] : 0; 
Note: See TracChangeset for help on using the changeset viewer.