WordPress.org

Plugin Directory

Changeset 1287423


Ignore:
Timestamp:
11/17/15 00:32:20 (2 years ago)
Author:
darkwhispering
Message:

multiple larger updates and changes, see changelog for more details

Location:
simple-instagram-embed
Files:
2 deleted
5 edited
1 copied

Legend:

Unmodified
Added
Removed
  • simple-instagram-embed/tags/2.0.0/readme.txt

    r1193867 r1287423  
    11=== Simple Instagram Embed === 
    22Contributors: darkwhispering 
    3 Tags: social, plugin, instagram, embed, instagram embed, image, video 
     3Tags: social, plugin, instagram, embed, instagram embed, image, video, oembed 
    44Requires at least: 3.0.0 
    5 Tested up to: 4.2.2 
    6 Stable tag: 1.3.0 
     5Tested up to: 4.4.0 
     6Stable tag: 2.0.0 
    77 
    88Paste any link to a instagram picture or video in your post and the plugin replace your instagram link with the Instagram Embed directly in your posts just like wordpress replace your youtube links to youtube embeds. 
     
    1212Paste any link to a instagram picture or video in your post and the plugin replace your instagram link with the [Instagram Embed](http://blog.instagram.com/post/55095847329/introducing-instagram-web-embeds) directly in your posts just like wordpress replace your youtube links to youtube embeds. 
    1313 
    14 Settings page avaliable to select between 3 different sizes to embed and if image/video caption should be included. 
     14Settings page avaliable where you can specify the maximum width the embed is allowed to be, and hide the caption if you would like that. 
     15If you site is responsive, the embed will resize down nicely on tablet and mobile devices. 
    1516 
    1617If you find any issues, please report them in the support section so they can be addressed. Thank you! 
    17  
    18 More info about the new Intagram Embed: http://blog.instagram.com/post/55095847329/introducing-instagram-web-embeds 
    1918 
    2019Plugin also available on [Github](https://github.com/darkwhispering/Simple-Instagram-Embed) 
     
    2726== Frequently Asked Questions == 
    2827 
     28= Image/video is not showing = 
     29You can only embed images/videos from public profiles. Images from private profiles will not display. So make sure the image you are trying to embed belongs to a user with a public profile. 
     30 
     31= I don't want likes and/or comments to be displayed = 
     32Unfortunately Instagram does not provide any option to hide likes and comments from the embed. 
     33 
    2934= I want the link in the embed to open in a new tab/window = 
    3035Yeah, so would I. Sadly, this is a behavior I can not control and it is up to Instagram to change this. Imo you should always open external links in new tabs, so I don't understand why Instagram have choosen not to with there embed. 
     
    3237== Screenshots == 
    3338 
    34 1. Embeded image in posts (large size) 
    35 2. Instagram url in pasted in editor 
    36 3. Plugin settings, select embed size 
     391. Plugin settings 
    3740 
    3841== Changelog == 
     42 
     43= 2.0.0 = 
     44* Now using the [Instagram oembed API](https://www.instagram.com/developer/embedding/#oembed) endpoint instead of old fashioned iframe embed. 
     45* Embeds are now fully responsive and scales nicely for mobile devices. 
     46* Completely recoded the settings page to leverage the Wordpress Settings API. Better late then never... 
     47* Any max width size can now be set in the settings page. No predefined sizes anymore. 
     48* Caption option on settings page has been change from *display* to *hide* caption if checked. 
     49* Fixed issue where embed broke if *www.* was included in the instagram URL. 
     50* Tested on Wordpress 4.4 
    3951 
    4052= 1.3.0 = 
  • simple-instagram-embed/tags/2.0.0/simple-instagram-embed.php

    r1193867 r1287423  
    66Author: Mattias Hedman 
    77Author URI: http://www.darkwhispering.com 
    8 Version: 1.3.0 
     8Version: 2.0.0 
    99*/ 
    1010 
    11 wp_embed_register_handler( 'simple_instagram_embed', '/https?\:\/\/instagram.com\/p\/(.+)/', 'simple_instagram_embed_handler' ); 
    12  
    13 function simple_instagram_embed_handler( $matches, $attr, $url, $rawattr ) 
     11// Initiate class 
     12$Simple_Instagram_Embed = new Simple_Instagram_Embed; 
     13 
     14// Register settings page and fields 
     15add_action( 'admin_init', array( $Simple_Instagram_Embed, 'settings' ) ); 
     16add_action( 'admin_menu', array( $Simple_Instagram_Embed, 'menu' ) ); 
     17 
     18// Register embed 
     19wp_embed_register_handler( 
     20    'simple_instagram_embed', 
     21    '/https?\:\/\/(?:www.)?instagram.com\/p\/(.+)/', 
     22    array( $Simple_Instagram_Embed, 'embed' ) 
     23); 
     24 
     25Class Simple_Instagram_Embed 
    1426{ 
    15     $size = get_option( 'insta_embed_size' ); 
    16     $caption = get_option( 'insta_embed_caption' ); 
    17  
    18     switch( $size ) 
    19     { 
    20         case 'large': 
    21             $iframe_size = 'width="612" height="720"'; 
    22             break; 
    23  
    24         case 'middle': 
    25             $iframe_size = 'width="480" height="600"'; 
    26             break; 
    27  
    28         case 'small': 
    29             $iframe_size = 'width="350" height="470"'; 
    30             break; 
    31  
    32         default: 
    33             $iframe_size = 'width="612" height="720"'; 
    34             break; 
    35     } 
    36  
    37     $image_id = str_replace( '/', '', $matches[1] ); 
    38  
    39     $embed = sprintf( 
    40         '<iframe src="//instagram.com/p/%1$s/embed/' . $caption . '?v=4" ' . $iframe_size . ' frameborder="0" scrolling="auto" allowtransparency="true" class="simple-instagram-embed instagram-embed"></iframe>', 
    41         esc_attr( $image_id ) 
    42     ); 
    43  
    44     return apply_filters( 'simple_instagram_embed', $embed, $matches, $attr, $url, $rawattr ); 
    45 } 
    46  
    47  
    48 function insta_embed_settings() 
    49 { 
     27 
     28    /** 
     29     * Add plugin settings page 
     30     */ 
     31    function menu() 
     32    { 
     33        add_options_page( 
     34            __( 'Simple Instagram Embed Settings', 'simple_instagram_embed' ), 
     35            __( 'Simple Instagram Embed', 'simple_instagram_embed' ), 
     36            'manage_options', 
     37            'insta-settings', 
     38            array( $this, 'settings_page' ) 
     39        ); 
     40    } 
     41 
     42    /** 
     43     * Add plugin settings page fields 
     44     */ 
     45    function settings() 
     46    { 
     47        // Add settings section 
     48        add_settings_section( 
     49            'insta_embed_settings_section', 
     50            '', 
     51            array( $this, 'settings_section_callback' ), 
     52            'insta_embed_settings_group' 
     53        ); 
     54 
     55        // Add settings field and register it 
     56        add_settings_field( 
     57            'insta_embed_size', 
     58            __( 'Embed max width', 'simple_instagram_embed' ), 
     59            array( $this, 'settings_insta_embed_size_callback' ), 
     60            'insta_embed_settings_group', 
     61            'insta_embed_settings_section' 
     62        ); 
     63        register_setting( 'insta_embed_settings_group', 'insta_embed_size' ); 
     64 
     65        // Add settings field and register it 
     66        add_settings_field( 
     67            'insta_embed_caption', 
     68            __( 'Hide image caption', 'simple_instagram_embed' ), 
     69            array( $this, 'settings_insta_embed_caption_callback' ), 
     70            'insta_embed_settings_group', 
     71            'insta_embed_settings_section' 
     72        ); 
     73        register_setting( 'insta_embed_settings_group', 'insta_embed_caption' ); 
     74    } 
     75 
     76    /** 
     77     * Has to exists, but we don't use it... 
     78     * 
     79     * @return  [type]  [description] 
     80     */ 
     81    function settings_section_callback() 
     82    { 
     83        // We don't want to do anything here atm... 
     84    } 
     85 
     86    /** 
     87     * Callback function that renders size settings field 
     88     */ 
     89    function settings_insta_embed_size_callback() 
     90    { 
     91        // Get current value, or set 600 as default 
     92        $size = get_option( 'insta_embed_size', 600 ); 
     93 
     94        // Convert old plugin string values to int 
     95        switch( $size ) { 
     96            case 'large': 
     97                $size = 612; 
     98                break; 
     99 
     100            case 'middle': 
     101                $size = 480; 
     102                break; 
     103 
     104            case 'small': 
     105                $size = 320; 
     106                break; 
     107        } 
     108 
     109        // Create HTML code 
     110        $html = '<input name="insta_embed_size" id="insta_embed_size" type="number" value="' . $size . '" />'; 
     111        $html .= '<p class="description">'. __( 'There is no height setting because the height will adjust automatically based on the width.', 'simple_instagram_embed' ) .'</p>'; 
     112 
     113        // Echo HTML code 
     114        echo $html; 
     115    } 
     116 
     117    /** 
     118     * Callback function that renders caption settings field 
     119     */ 
     120    function settings_insta_embed_caption_callback() 
     121    { 
     122        // Create HTML code 
     123        $html = '<input name="insta_embed_caption" id="insta_embed_caption" type="checkbox" value="1" ' . checked( 1, get_option( 'insta_embed_caption' ), false ) . ' />'; 
     124 
     125        // Echo HTML code 
     126        echo $html; 
     127    } 
     128 
     129    /** 
     130     * Render settings page 
     131     */ 
     132    function settings_page() 
     133    { 
     134        // Check so user has correct permissions 
    50135        if ( ! current_user_can( 'manage_options' ) ) 
    51136        { 
     
    53138        } 
    54139 
    55         $size = get_option( 'insta_embed_size' ); 
    56         $caption = get_option( 'insta_embed_caption' ); 
    57  
    58         switch( $size ) { 
    59             case 'large': 
    60                 $large = 'selected="selected"'; 
    61                 break; 
    62  
    63             case 'middle': 
    64                 $middle = 'selected="selected"'; 
    65                 break; 
    66  
    67             case 'small': 
    68                 $small = 'selected="selected"'; 
    69                 break; 
    70  
    71             default: 
    72                 $large = 'selected="selected"'; 
    73                 break; 
     140        ?> 
     141 
     142        <div class="wrap insta-settings"> 
     143 
     144            <h1><?php _e( 'Simple Instagram Embed Settings', 'simple_instagram_embed' ); ?></h1> 
     145 
     146            <form method="post" action="options.php"> 
     147            <?php 
     148                // Print out all needed fields and submit button. 
     149                settings_fields( 'insta_embed_settings_group' ); 
     150                do_settings_sections( 'insta_embed_settings_group' ); 
     151                submit_button(); 
     152            ?> 
     153            </form> 
     154 
     155        </div> 
     156 
     157        <?php 
     158    } 
     159 
     160    /** 
     161     * Embed code 
     162     */ 
     163    function embed( $matches, $attr, $url, $rawattr ) 
     164    { 
     165        $size         = get_option( 'insta_embed_size' ); 
     166        $hide_caption = get_option( 'insta_embed_caption' ); 
     167        $image_id     = str_replace( '/', '', $matches[1] ); 
     168        $embed        = $this->get_embed_code( $image_id, $size, $hide_caption ); 
     169 
     170        return apply_filters( 'simple_instagram_embed', $embed, $matches, $attr, $url, $rawattr ); 
     171    } 
     172 
     173    /** 
     174     * Get embed code from Instagram 
     175     * 
     176     * @param   string   $image_id      Image ID on Instagram 
     177     * @param   integer  $size          Size (width) in pixels 
     178     * @param   boolean  $hide_caption  Should caption be hidden 
     179     * 
     180     * @return  html                    Returns embed HTML code 
     181     */ 
     182    function get_embed_code( $image_id = null, $size = 600, $hide_caption = false ) 
     183    { 
     184        $curl = curl_init(); 
     185 
     186        curl_setopt_array( 
     187            $curl, 
     188            array( 
     189                CURLOPT_RETURNTRANSFER => 1, 
     190                CURLOPT_URL            => 'https://instagram.com/publicapi/oembed/?url=https://instagr.am/p/' . $image_id . '&maxwidth=' . $size . '&hidecaption=' . $hide_caption, 
     191                CURLOPT_USERAGENT      => 'Simple Instagram Embed Wordpress Plugin' 
     192            ) 
     193        ); 
     194 
     195        $result = json_decode( curl_exec( $curl ) ); 
     196        $http_status = curl_getinfo( $curl, CURLINFO_HTTP_CODE ); 
     197 
     198        curl_close( $curl ); 
     199 
     200        if ( $http_status === 200 ) 
     201        { 
     202            return $result->html; 
    74203        } 
    75     ?> 
    76         <div class="wrap insta-settings"> 
    77             <h2><?php _e( 'Simple Instagram Embed Settings', 'simple_instagram_embed' ); ?></h2> 
    78  
    79             <form method="post" action="options.php"> 
    80                 <?php wp_nonce_field( 'update-options' ); ?> 
    81  
    82                 <table class="form-table insta-settings-table"> 
    83                     <tbody> 
    84                         <tr valign="top"> 
    85                             <th scope="row"> 
    86                                 <strong><?php _e( 'Choose embed size:', 'simple_instagram_embed' ); ?></strong> 
    87                             </th> 
    88                             <td> 
    89                                 <select name="insta_embed_size"> 
    90                                     <option value="large" <?php echo $large; ?>> 
    91                                         <?php _e( 'Large (w:612 x h:720 pixels)', 'simple_instagram_embed' ); ?> 
    92                                     </option> 
    93                                     <option value="middle" <?php echo $middle; ?>> 
    94                                         <?php _e( 'Middle (w:480 x h:600 pixels)', 'simple_instagram_embed' ); ?> 
    95                                     </option> 
    96                                     <option value="small" <?php echo $small; ?>> 
    97                                         <?php _e( 'Small (w:350 x h:470 pixels)', 'simple_instagram_embed' ); ?> 
    98                                     </option> 
    99                                 </select> 
    100                             </td> 
    101                         </tr> 
    102                         <tr valign="top"> 
    103                             <th scope="row"> 
    104                                 <?php _e( 'Include caption', 'simple_instagram_embed'); ?> 
    105                             </th> 
    106                             <td> 
    107                                 <label for="insta_embed_caption"> 
    108                                     <input type="checkbox" id="insta_embed_caption" name="insta_embed_caption" value="captioned" <?php echo !empty( $caption ) ? 'checked="checked"' : '' ?> /> 
    109                                 </label> 
    110                             </td> 
    111                         </tr> 
    112                     </tbody> 
    113                 </table> 
    114  
    115                 <input type="hidden" name="action" value="update" /> 
    116                 <input type="hidden" name="page_options" value="insta_embed_size, insta_embed_caption" /> 
    117                 <input type="submit" name="submit" value="<?php _e( 'Save', 'simple_instagram_embed' ); ?>" class="button-primary save" /> 
    118             </form> 
    119  
    120         </div> 
    121     <?php 
    122     } 
    123  
    124  
    125 function insta_embed_menu() 
    126 { 
    127     add_submenu_page( 'options-general.php', 'Simple Instagram Embed Settings', 'Simple Instagram Embed', 'manage_options', 'insta-settings', 'insta_embed_settings' ); 
     204 
     205        return ''; 
     206    } 
    128207} 
    129 add_action( 'admin_menu', 'insta_embed_menu' ); 
  • simple-instagram-embed/trunk/readme.txt

    r1193867 r1287423  
    11=== Simple Instagram Embed === 
    22Contributors: darkwhispering 
    3 Tags: social, plugin, instagram, embed, instagram embed, image, video 
     3Tags: social, plugin, instagram, embed, instagram embed, image, video, oembed 
    44Requires at least: 3.0.0 
    5 Tested up to: 4.2.2 
    6 Stable tag: 1.3.0 
     5Tested up to: 4.4.0 
     6Stable tag: 2.0.0 
    77 
    88Paste any link to a instagram picture or video in your post and the plugin replace your instagram link with the Instagram Embed directly in your posts just like wordpress replace your youtube links to youtube embeds. 
     
    1212Paste any link to a instagram picture or video in your post and the plugin replace your instagram link with the [Instagram Embed](http://blog.instagram.com/post/55095847329/introducing-instagram-web-embeds) directly in your posts just like wordpress replace your youtube links to youtube embeds. 
    1313 
    14 Settings page avaliable to select between 3 different sizes to embed and if image/video caption should be included. 
     14Settings page avaliable where you can specify the maximum width the embed is allowed to be, and hide the caption if you would like that. 
     15If you site is responsive, the embed will resize down nicely on tablet and mobile devices. 
    1516 
    1617If you find any issues, please report them in the support section so they can be addressed. Thank you! 
    17  
    18 More info about the new Intagram Embed: http://blog.instagram.com/post/55095847329/introducing-instagram-web-embeds 
    1918 
    2019Plugin also available on [Github](https://github.com/darkwhispering/Simple-Instagram-Embed) 
     
    2726== Frequently Asked Questions == 
    2827 
     28= Image/video is not showing = 
     29You can only embed images/videos from public profiles. Images from private profiles will not display. So make sure the image you are trying to embed belongs to a user with a public profile. 
     30 
     31= I don't want likes and/or comments to be displayed = 
     32Unfortunately Instagram does not provide any option to hide likes and comments from the embed. 
     33 
    2934= I want the link in the embed to open in a new tab/window = 
    3035Yeah, so would I. Sadly, this is a behavior I can not control and it is up to Instagram to change this. Imo you should always open external links in new tabs, so I don't understand why Instagram have choosen not to with there embed. 
     
    3237== Screenshots == 
    3338 
    34 1. Embeded image in posts (large size) 
    35 2. Instagram url in pasted in editor 
    36 3. Plugin settings, select embed size 
     391. Plugin settings 
    3740 
    3841== Changelog == 
     42 
     43= 2.0.0 = 
     44* Now using the [Instagram oembed API](https://www.instagram.com/developer/embedding/#oembed) endpoint instead of old fashioned iframe embed. 
     45* Embeds are now fully responsive and scales nicely for mobile devices. 
     46* Completely recoded the settings page to leverage the Wordpress Settings API. Better late then never... 
     47* Any max width size can now be set in the settings page. No predefined sizes anymore. 
     48* Caption option on settings page has been change from *display* to *hide* caption if checked. 
     49* Fixed issue where embed broke if *www.* was included in the instagram URL. 
     50* Tested on Wordpress 4.4 
    3951 
    4052= 1.3.0 = 
  • simple-instagram-embed/trunk/simple-instagram-embed.php

    r1193867 r1287423  
    66Author: Mattias Hedman 
    77Author URI: http://www.darkwhispering.com 
    8 Version: 1.3.0 
     8Version: 2.0.0 
    99*/ 
    1010 
    11 wp_embed_register_handler( 'simple_instagram_embed', '/https?\:\/\/instagram.com\/p\/(.+)/', 'simple_instagram_embed_handler' ); 
    12  
    13 function simple_instagram_embed_handler( $matches, $attr, $url, $rawattr ) 
     11// Initiate class 
     12$Simple_Instagram_Embed = new Simple_Instagram_Embed; 
     13 
     14// Register settings page and fields 
     15add_action( 'admin_init', array( $Simple_Instagram_Embed, 'settings' ) ); 
     16add_action( 'admin_menu', array( $Simple_Instagram_Embed, 'menu' ) ); 
     17 
     18// Register embed 
     19wp_embed_register_handler( 
     20    'simple_instagram_embed', 
     21    '/https?\:\/\/(?:www.)?instagram.com\/p\/(.+)/', 
     22    array( $Simple_Instagram_Embed, 'embed' ) 
     23); 
     24 
     25Class Simple_Instagram_Embed 
    1426{ 
    15     $size = get_option( 'insta_embed_size' ); 
    16     $caption = get_option( 'insta_embed_caption' ); 
    17  
    18     switch( $size ) 
    19     { 
    20         case 'large': 
    21             $iframe_size = 'width="612" height="720"'; 
    22             break; 
    23  
    24         case 'middle': 
    25             $iframe_size = 'width="480" height="600"'; 
    26             break; 
    27  
    28         case 'small': 
    29             $iframe_size = 'width="350" height="470"'; 
    30             break; 
    31  
    32         default: 
    33             $iframe_size = 'width="612" height="720"'; 
    34             break; 
    35     } 
    36  
    37     $image_id = str_replace( '/', '', $matches[1] ); 
    38  
    39     $embed = sprintf( 
    40         '<iframe src="//instagram.com/p/%1$s/embed/' . $caption . '?v=4" ' . $iframe_size . ' frameborder="0" scrolling="auto" allowtransparency="true" class="simple-instagram-embed instagram-embed"></iframe>', 
    41         esc_attr( $image_id ) 
    42     ); 
    43  
    44     return apply_filters( 'simple_instagram_embed', $embed, $matches, $attr, $url, $rawattr ); 
    45 } 
    46  
    47  
    48 function insta_embed_settings() 
    49 { 
     27 
     28    /** 
     29     * Add plugin settings page 
     30     */ 
     31    function menu() 
     32    { 
     33        add_options_page( 
     34            __( 'Simple Instagram Embed Settings', 'simple_instagram_embed' ), 
     35            __( 'Simple Instagram Embed', 'simple_instagram_embed' ), 
     36            'manage_options', 
     37            'insta-settings', 
     38            array( $this, 'settings_page' ) 
     39        ); 
     40    } 
     41 
     42    /** 
     43     * Add plugin settings page fields 
     44     */ 
     45    function settings() 
     46    { 
     47        // Add settings section 
     48        add_settings_section( 
     49            'insta_embed_settings_section', 
     50            '', 
     51            array( $this, 'settings_section_callback' ), 
     52            'insta_embed_settings_group' 
     53        ); 
     54 
     55        // Add settings field and register it 
     56        add_settings_field( 
     57            'insta_embed_size', 
     58            __( 'Embed max width', 'simple_instagram_embed' ), 
     59            array( $this, 'settings_insta_embed_size_callback' ), 
     60            'insta_embed_settings_group', 
     61            'insta_embed_settings_section' 
     62        ); 
     63        register_setting( 'insta_embed_settings_group', 'insta_embed_size' ); 
     64 
     65        // Add settings field and register it 
     66        add_settings_field( 
     67            'insta_embed_caption', 
     68            __( 'Hide image caption', 'simple_instagram_embed' ), 
     69            array( $this, 'settings_insta_embed_caption_callback' ), 
     70            'insta_embed_settings_group', 
     71            'insta_embed_settings_section' 
     72        ); 
     73        register_setting( 'insta_embed_settings_group', 'insta_embed_caption' ); 
     74    } 
     75 
     76    /** 
     77     * Has to exists, but we don't use it... 
     78     * 
     79     * @return  [type]  [description] 
     80     */ 
     81    function settings_section_callback() 
     82    { 
     83        // We don't want to do anything here atm... 
     84    } 
     85 
     86    /** 
     87     * Callback function that renders size settings field 
     88     */ 
     89    function settings_insta_embed_size_callback() 
     90    { 
     91        // Get current value, or set 600 as default 
     92        $size = get_option( 'insta_embed_size', 600 ); 
     93 
     94        // Convert old plugin string values to int 
     95        switch( $size ) { 
     96            case 'large': 
     97                $size = 612; 
     98                break; 
     99 
     100            case 'middle': 
     101                $size = 480; 
     102                break; 
     103 
     104            case 'small': 
     105                $size = 320; 
     106                break; 
     107        } 
     108 
     109        // Create HTML code 
     110        $html = '<input name="insta_embed_size" id="insta_embed_size" type="number" value="' . $size . '" />'; 
     111        $html .= '<p class="description">'. __( 'There is no height setting because the height will adjust automatically based on the width.', 'simple_instagram_embed' ) .'</p>'; 
     112 
     113        // Echo HTML code 
     114        echo $html; 
     115    } 
     116 
     117    /** 
     118     * Callback function that renders caption settings field 
     119     */ 
     120    function settings_insta_embed_caption_callback() 
     121    { 
     122        // Create HTML code 
     123        $html = '<input name="insta_embed_caption" id="insta_embed_caption" type="checkbox" value="1" ' . checked( 1, get_option( 'insta_embed_caption' ), false ) . ' />'; 
     124 
     125        // Echo HTML code 
     126        echo $html; 
     127    } 
     128 
     129    /** 
     130     * Render settings page 
     131     */ 
     132    function settings_page() 
     133    { 
     134        // Check so user has correct permissions 
    50135        if ( ! current_user_can( 'manage_options' ) ) 
    51136        { 
     
    53138        } 
    54139 
    55         $size = get_option( 'insta_embed_size' ); 
    56         $caption = get_option( 'insta_embed_caption' ); 
    57  
    58         switch( $size ) { 
    59             case 'large': 
    60                 $large = 'selected="selected"'; 
    61                 break; 
    62  
    63             case 'middle': 
    64                 $middle = 'selected="selected"'; 
    65                 break; 
    66  
    67             case 'small': 
    68                 $small = 'selected="selected"'; 
    69                 break; 
    70  
    71             default: 
    72                 $large = 'selected="selected"'; 
    73                 break; 
     140        ?> 
     141 
     142        <div class="wrap insta-settings"> 
     143 
     144            <h1><?php _e( 'Simple Instagram Embed Settings', 'simple_instagram_embed' ); ?></h1> 
     145 
     146            <form method="post" action="options.php"> 
     147            <?php 
     148                // Print out all needed fields and submit button. 
     149                settings_fields( 'insta_embed_settings_group' ); 
     150                do_settings_sections( 'insta_embed_settings_group' ); 
     151                submit_button(); 
     152            ?> 
     153            </form> 
     154 
     155        </div> 
     156 
     157        <?php 
     158    } 
     159 
     160    /** 
     161     * Embed code 
     162     */ 
     163    function embed( $matches, $attr, $url, $rawattr ) 
     164    { 
     165        $size         = get_option( 'insta_embed_size' ); 
     166        $hide_caption = get_option( 'insta_embed_caption' ); 
     167        $image_id     = str_replace( '/', '', $matches[1] ); 
     168        $embed        = $this->get_embed_code( $image_id, $size, $hide_caption ); 
     169 
     170        return apply_filters( 'simple_instagram_embed', $embed, $matches, $attr, $url, $rawattr ); 
     171    } 
     172 
     173    /** 
     174     * Get embed code from Instagram 
     175     * 
     176     * @param   string   $image_id      Image ID on Instagram 
     177     * @param   integer  $size          Size (width) in pixels 
     178     * @param   boolean  $hide_caption  Should caption be hidden 
     179     * 
     180     * @return  html                    Returns embed HTML code 
     181     */ 
     182    function get_embed_code( $image_id = null, $size = 600, $hide_caption = false ) 
     183    { 
     184        $curl = curl_init(); 
     185 
     186        curl_setopt_array( 
     187            $curl, 
     188            array( 
     189                CURLOPT_RETURNTRANSFER => 1, 
     190                CURLOPT_URL            => 'https://instagram.com/publicapi/oembed/?url=https://instagr.am/p/' . $image_id . '&maxwidth=' . $size . '&hidecaption=' . $hide_caption, 
     191                CURLOPT_USERAGENT      => 'Simple Instagram Embed Wordpress Plugin' 
     192            ) 
     193        ); 
     194 
     195        $result = json_decode( curl_exec( $curl ) ); 
     196        $http_status = curl_getinfo( $curl, CURLINFO_HTTP_CODE ); 
     197 
     198        curl_close( $curl ); 
     199 
     200        if ( $http_status === 200 ) 
     201        { 
     202            return $result->html; 
    74203        } 
    75     ?> 
    76         <div class="wrap insta-settings"> 
    77             <h2><?php _e( 'Simple Instagram Embed Settings', 'simple_instagram_embed' ); ?></h2> 
    78  
    79             <form method="post" action="options.php"> 
    80                 <?php wp_nonce_field( 'update-options' ); ?> 
    81  
    82                 <table class="form-table insta-settings-table"> 
    83                     <tbody> 
    84                         <tr valign="top"> 
    85                             <th scope="row"> 
    86                                 <strong><?php _e( 'Choose embed size:', 'simple_instagram_embed' ); ?></strong> 
    87                             </th> 
    88                             <td> 
    89                                 <select name="insta_embed_size"> 
    90                                     <option value="large" <?php echo $large; ?>> 
    91                                         <?php _e( 'Large (w:612 x h:720 pixels)', 'simple_instagram_embed' ); ?> 
    92                                     </option> 
    93                                     <option value="middle" <?php echo $middle; ?>> 
    94                                         <?php _e( 'Middle (w:480 x h:600 pixels)', 'simple_instagram_embed' ); ?> 
    95                                     </option> 
    96                                     <option value="small" <?php echo $small; ?>> 
    97                                         <?php _e( 'Small (w:350 x h:470 pixels)', 'simple_instagram_embed' ); ?> 
    98                                     </option> 
    99                                 </select> 
    100                             </td> 
    101                         </tr> 
    102                         <tr valign="top"> 
    103                             <th scope="row"> 
    104                                 <?php _e( 'Include caption', 'simple_instagram_embed'); ?> 
    105                             </th> 
    106                             <td> 
    107                                 <label for="insta_embed_caption"> 
    108                                     <input type="checkbox" id="insta_embed_caption" name="insta_embed_caption" value="captioned" <?php echo !empty( $caption ) ? 'checked="checked"' : '' ?> /> 
    109                                 </label> 
    110                             </td> 
    111                         </tr> 
    112                     </tbody> 
    113                 </table> 
    114  
    115                 <input type="hidden" name="action" value="update" /> 
    116                 <input type="hidden" name="page_options" value="insta_embed_size, insta_embed_caption" /> 
    117                 <input type="submit" name="submit" value="<?php _e( 'Save', 'simple_instagram_embed' ); ?>" class="button-primary save" /> 
    118             </form> 
    119  
    120         </div> 
    121     <?php 
    122     } 
    123  
    124  
    125 function insta_embed_menu() 
    126 { 
    127     add_submenu_page( 'options-general.php', 'Simple Instagram Embed Settings', 'Simple Instagram Embed', 'manage_options', 'insta-settings', 'insta_embed_settings' ); 
     204 
     205        return ''; 
     206    } 
    128207} 
    129 add_action( 'admin_menu', 'insta_embed_menu' ); 
Note: See TracChangeset for help on using the changeset viewer.