DsgnWrks Importer for Instagram


In the spirit of WordPress and “owning your data,” this plugin will allow you to import and backup your instagram photos to your WordPress site. Includes robust options to allow you to control the imported posts formatting including built-in support for WordPress custom post-types, custom taxonomies, post-formats. You can control the content of the title and content of the imported posts using tags like **insta-image**, **insta-text**, and others, or use the new conditional tags [if-insta-text]Photo Caption: **insta-text**[/if-insta-text] and [if-insta-location]Photo taken at: **insta-location**[/if-insta-location]. Add an unlimited number of user accounts for backup and importing.

As of version 1.2.0, you can now import and backup your instagram photos automatically! The plugin gives you the option to choose from the default WordPress cron schedules, but if you wish to add a custom interval, you may want to add the wp-crontrol plugin.

Version 1.2.6 introduced many new features for Instagram video. Your videos will now be imported to the WordPress media library, as well as the cover image. The new shortcode, [dsgnwrks_instagram_embed src="INSTAGRAM_MEDIA_URL"], displays your imported media as an Instagram embed (works great for video!) and finally, you can now use the tags, **insta-embed-image**, and **insta-embed-video**, in the Post Content template to save the dsgnwrks_instagram_embed shortcode to the post.

Plugin is built with developers in mind and has many filters to manipulate the imported posts.

See Wiki for more help.

Sites That Have Used the Importer

(send me your site if you want to be featured here)

Like this plugin? Checkout the DsgnWrks Twitter Importer. Feel free to contribute to this plugin on github.

View plugin listing on wordpress.org →


Latest version: Download DsgnWrks Importer for Instagram v2.1.1 [zip]


  1. Upload the dsgnwrks-instagram-importer directory to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Visit the plugin settings page (/wp-admin/tools.php?page=dsgnwrks-instagram-importer-settings) to add your instagram usernames and adjust your import settings. If you want to see how how the output will look, I suggest you set the date filter to the last month or so. If you have a lot of instagram photos, you may want to import the photos in chunks (set the date further and further back between imports till you have them all) to avoid server overload or timeouts.
  4. Import!


Q. How do I use these snippets?

  • Below are some common requests, and some helper snippets to accomplish them. To install these gists, download the gist from github, unzip, and copy the .php file inside to your site’s wp-content/mu-plugins directory. If you do not have the mu-plugins directory, simply create it. For more information, read this post.

Q. Is it possible to set the default image display size in a post?

  • If you’re importing as the featured image and your theme supports featured images, that is the size that will be used. If you’re instead importing the image to the post, there is a filter in the plugin for overriding the image size. If you wanted to instead use the “medium” image size created by WordPress, you can use this snippet: https://gist.github.com/jtsternberg/1c6b332b2db6da7e38226b88dff5c6a0.
    That is a filter on the $size parameter passed to wp_get_attachment_image_src() so you can use any values you would use there. wp_get_attachment_image_src() on the codex: https://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src

Q. Is it possible to limit the length of the imported posts?

Q. Is it possible to set the title of the imported posts to the date of the image?

Q. Can I save my own post-meta fields for each post?

Q. Is it possible to automatically center align the imported images?

Q. Can I remove the text from the excerpt field?

Q. Is it possible to store the location data in the recommended WordPress GPS coordinates format/standard?

Q. Is it possible to modify where the instagram meta data is stored?

Q. Is it possible to embed the imported videos with WordPress native video player, instead of the Instagram embed?

Q. I created a user & the options disappear on saving?

Q. ??



  • Use new hack to get full resolution image for import. See https://stackoverflow.com/a/48296606/1883421


  • Add media-type conditions to output different things depending on the type of media from instagram. Fixes: #44
  • Better media file-names. Default to using excerpted title, falling back to the created time.
  • Keep from double-importing the first image for carousel media items.


  • Provide filter (dsgnwrks_instagram_video_import_resolutions) for specifying which video resolutions to import.
  • Improved imported items display, including:
    • Excerpted title in case they get super long
    • Update titles for imported video items
    • Trash link for instantly curating
    • Edit link for getting to the image quickly
    • Added <li> title attribute for “imported & created successfully”
    • Fix formatting of imported item output for videos
  • Fix issue where it looks like we are still looping and no-new-to-import does not show
  • Fix issue with javascript log function not working in some instances
  • Enable importing instagram carousel posts. Fixes #43 and #30 TODO: enable gallery settings, etc
  • Update/fix Travis CI configuration for better testing. Props Nathan Friedly
  • Fix issue with access_token query var being used by other plugins
  • Fixed several issues with unit tests
  • Added dsgnwrks_instagram_post_meta_pre_save filter to allow changing meta keys. Fixes #29.
  • Add the ability to reimport missed photos. Fixes #32, and #37
  • Cleaned up broken bits of UI.
  • Store deleted instagram-imported posts to blacklist, to keep from reimporting intentionally deleted items.
  • Add a UI for editing the blacklist in the settings.


  • Add dsgnwrks_instagram_post_meta_pre_save filter to allow saving meta to user-defined keys. Fixes Issue 29.
  • Add alt attribute to instagram image.
  • Fix bug where other instagram plugin’s settings would redirect to our plugin setting page (forum post).


  • Fix condition markup, if condition is the first bit in the content.
  • Allow deletion of users when the key is 0. hat-tip to Pablo de la Vega: http://dsgnwrks.pro/plugins/dsgnwrks-instagram-importer/#comment-12208
  • Fix issue w/ cached user data not being stored to transient.
  • Delete user-data transient when deleting user.
  • Cleanup wysiwyg editor instance.
  • No longer need bio, website, fullname, and profile_picture from authentication callback as we fetch in a separate request (or data is not needed).


  • Fix issues where Instagram usernames with certain characters could not show the settings panel.


  • Fix issues where Instagram usernames with certain characters could not import media.


  • Update: fix unit tests.
  • Update: Switch to a singleton for primary plugin class. (this helps address some issues with the debug plugin)


  • Bug fix: Fix “Call to undefined method DsgnWrksInstagram::get_options()” error.


  • Bug fix: Fix “Call to undefined method DsgnWrksInstagram_Settings::debugsend()” error.


  • Bug fix: Some checkboxes were not displaying the saved value.


  • Occasionally update the stored user’s data from the instagram API to keep it fresh.
  • Fix fatal error when deactivating the plugin.


  • When possible, import the full-resolution non-square instagram images.


  • Update importer image markup to support coming responsive images update to WordPress core.


  • When possible, import the full-resolution instagram images (1080×1080).


  • Bug fix: Made the auto-import feature off by default. Would sometimes be triggered on plugin activation.
  • Saved the Instagram username to post-meta (instagram_username) along with the entire Instagram user object (instagram_user).


  • Bug fix: Tag filter is now more reliable.


  • Bug fix: Adding a new user no longer resets the auto-import frequency setting.
  • Bug fix: User settings would occasionally not save correctly.
  • Conflict fix: Do not publicize imported posts via Jetpack.
  • New: Template tag for getting the instagram image, dw_get_instagram_image, and for displaying the image, dw_instagram_image.


  • New: Shortcode for displaying instagram embed, dsgnwrks_instagram_embed.
  • New: **insta-embed-image**, and **insta-embed-video** import content tags to add the embed shortcode. Using these tags will negate the **insta-image** tag.
  • New: Plugin option for selecting to remove #hashtags when saving posts’ Title/Content/Excerpt.
  • New: dsgnwrks_instagram_import_types filter – Modify to exclude images or video (or others?) from the import.
  • New: dsgnwrks_instagram_post_excerpt filter – Modifies the imported posts’ excerpts.
  • New: dsgnwrks_instagram_post_title filter – Modifies the imported posts’ titles.
  • New: dsgnwrks_instagram_post_content filter – Modifies the imported posts’ content.
  • New: dsgnwrks_instagram_{$tag} filter – Allows granular modification of each content tag’s replacement.
  • Improvement: Better ajax importing of images/posts. Each imported post will show live feedback during the import process.
  • Improvement: Better styling for users with MP6 installed.
  • Fixed: Authenticating users with Emoji (or other special characters in their bios) would cause the plugin to break.
  • Fixed: Post format selector didn’t have correct class and so wasn’t getting shown correctly.


  • Added: POT translation file.
  • Improvement: Import now runs via AJAX, and imported post messages have improved styling.
  • Fixed: Previously had no uninstall hook. Now deletes plugin option data (not imported posts) when uninstalling plugin.


  • Fixed: **insta-image-link** now pulls in the full 612×612 image size.
  • Added: dsgnwrks_instagram_image_size filter for changing from ‘full’ to any registered image size.
  • Added: dsgnwrks_instagram_insta_image filter to allow manipulation of the **insta-image** html markup (add classes, etc).


  • Fixed: Better SSL management


  • Added: Option to save Instagram hashtags as taxonomy terms (tags, categories, etc).
  • Added: Filter on Settings page to allow other plugins/themes to add extra settings fields.
  • Added: More of the Instagram photo data is saved to post_meta. props csenf
  • Fixed: Better management and display of API connection errors. props csenf


  • Added: Internationalization (i18n) translation support, and debugging infrastructure.


  • Added: It’s finally here! Option to auto-import/backup your instagram shots.


  • Added: Option to conditionally add “insta-text” & “insta-location.”
  • Updated: Default options when first adding a user, including the “insta-location” conditional in the post content.
  • Fixed: When unchecking “set as featured image,” the posts would still add the featured image.


  • Fixed: When unchecking “set as featured image” the input would still display as checked


  • Fix infinite redirect when adding a new user


  • Update plugin instructions that state setting the image as featured is required for images to be backed-up. As of version 1.1, this is no longer a requirement.


  • Convert plugin to an OOP class and remove amazon S3 links from post content. Props to @UltraNurd.


  • Fixes a bug with new user profile images not showing correctly


  • Fixed a bug where imported instagram times could be set to the future


  • Launch.


  1. Welcome Panel.

    Welcome Panel.

  2. After authenticating a user, this is the options panel you'll be presented with. If you select a custom post-type in the post-type selector, the options may change based on the post-type's supports, as well as any custom taxonomies.

    After authenticating a user, this is the options panel you’ll be presented with. If you select a custom post-type in the post-type selector, the options may change based on the post-type’s supports, as well as any custom taxonomies.

45 Comments on “DsgnWrks Importer for Instagram

  1. Pingback: Create An Awesome Instagram Photo Website Using WordPress

  2. Pingback: instagram -> Wordrpress blog | kobak pont org

  3. Pingback: BLOG: Meine Plugins | NUTZHIRN

  4. Pingback: Introducing Boergstagram - Das Leben des Boerge

  5. great plugin ..
    a info, it is possible to disable a specific #
    # # example red and white is no

  6. I am having a problem. the text in my post preview (view in instagram) is not actually showing in the post, when i view the post it is displaying a media rather than the full post, can anyone help me fix this as i want the view in instagram to show

  7. Hello
    Since a few Days I have the problem that it’s not automatically posting/importing the pictures. I’ve already checked it several times and it’s on “once hourly” (the “after 5 min” is gone?) and the imported post status is “published”. After once hitting manually it’s importing but as this function is not working from mobile phones I’d really need it to work again :'(

    • Schedules/cron is not something I’m able to support as this is almost always an issue with your web host. Can you please open a ticket with them requesting that they look into this? Mention that scheduled events are not firing. And as a test (and something to report to them), try scheduling a few posts to see if they publish when they are scheduled to.

  8. Love this plugin – awesome timesaver – works perfectly except for when the Import Status is set to “Published”. “Draft” or “Pending” work fine. Manually publishing is fine – but it would be nice if I could get an import to go straight to published. Any ideas?

    • So turns out the importer was only having issues bulk publishing a number of IGs during the initial import. Now that its set up and running, its having no problem importing IGs directly to posted one at a time.

  9. hi there, I love this plug in it has been so handy!

    But i was wondering if there is a way to prevent the posts being uploaded to the general ‘home’ page?

    Ive got new instagram pictures set up to come through as posts and they automatically go into my instagram section but I don’t want them clogging up my home page – if there is a way to prevent this I would appreciate any advice!


  10. Pingback: The Social Media Fallacy-Business Income From Social Media

  11. Hi,

    THis is a great plugin, however I am having issues deleting users.

    I get “infinite redirect loop” on Chrome and Firefox asks “Are you sure you want to delete this user” but when I click yes, nothing happens.

    Any assistance is greatly appreciated. I’ve rated your plugin 5 stars!

  12. Pingback: So, Instagram | Multi-faceted Abnormal

  13. I tried using this plug-in, but the authentication timed out and then after that it just tried redirecting me to shady sites, including a spoofed instagram log-in screen… that’s a bummer.

    • Oh no! I’ve been having issues with my Instagram authentication server, but never with redirecting to shady sites. Can you give me more information? And what were the shady spoofed sites you were referring to?

  14. Hi, thanks so much for this super plugin! I am not even advanced enough to be considered a novice at websites and coding – I know enough to be dangerous. :) So, I’ve imported a month’s worth of photos into my blog and LOVE this feature. However, I’m having issues knowing where to add the override filter for image size. I thought I had changed my blog’s settings for featured photo to a smaller size – but it’s not working and the photos are HUGE.

    I’ve googled and tried to figure this out on my own but cannot figure it out. Is there any way you can give me a little more help with keeping photos are more manageable size? My blog is private, so I can’t really link you to any posts, but I don’t think the problem is really blog-specific as it is user-error.

    • I had the same problem, and I didn’t know what to do, either. I finally fixed it by editing the file at wp-content/plugins/dsgnwrks-instagram-importer/dsgnwrks-instagram-importer.php.

      There are two lines at 1212 and 1213 that are trying to calculate the imgsize. I added a new line at 1214 that looks like this:

      $imgsize = ‘medium’;

      And it “works” for me. That is, instead of having huge images on my posts, it sets the height and width of the image to 300 pixels.

      Maybe you could try ‘large’ instead of ‘medium’ if 300 is too small?

  15. It would be great to be able to import just on Tags. So not connected to any account just import images with a certain hashtag.

    is that possible?

    • It’s not possible without getting approval from Instagram for that API endpoint, and they would not grant that to me, as they don’t want people slurping up Instagram content if it’s not their content.

  16. File: dsgnwrks-instagram-importer.php
    Line: 1438


    if ( $delete ) {


    if ( $delete !== false ) {


    If the key to delete it’s 0 you can’t delete the user.

  17. Pingback: #instagram と#wordpress を #Instagram Importerプラグインで連携させれば最強のモブログ更新環境が実現できる。 The quickest update on my #wordpress blog using #instagram importer plugin. – ベトナム起業日記

  18. hi, i like your post, but this plugin doesn work on my altervista site, i don’t know why

  19. Would appreciate the effort you made to make this plugin.

    It was working very smoothly and suddenly it shows no new shots to import i’ve cleaned everything all the content deleted permanently but it imports only 4-5 videos nothing more than that it would skip images and limit the import to 4-5.

    i also installed the debuger could you please check it for us we are using it on http://www.oloomad.com, we can pay you for your valuable time.

    Kind Regards

  20. This plugin seems like exactly what I’ve been looking for.

    Following your advice to “set the date further and further back between imports till you have them all” I started out importing my three most recent photos. Made some changes to the settings based on what the import looked like (would love to see an option to set a default image size other than “so big it overflows my layout”). Then set the date back a few more days, and … nothing. It claims there are no more photos to import. No matter how far back I go with the date setting, it simply says “No new Instagram shots to import.”

    • I need to make that clearer, or remove that comment altogether. The plugin will not import items older than the newest ones it has imported. To fix it, you will need to delete (and empty them from trash) the ones you have already imported, then set the date filter to the furthest date you want (or remove the filter), and just let the plugin run (without closing the tab/window). It may take a while, but it should keep running and eventually grab them all.

      • Cool. That trick allowed it to start downloading posts again. But this time I noticed two problems.

        First: it doesn’t know what to do with multi-image posts. It just seems to skip them entirely. I guess I could live with that, if necessary.

        But second, and more problematically: it downloaded 64 posts and then said it was done. I have over 1000 posts I’m trying to move to my blog. I noticed that where it stopped, there were two multi-image posts in a row. Maybe that killed it?

        I have no idea what the API it uses looks like, but the other potential clue is that the oldest post it successfully downloaded was less than 7 months old, and the newest single-image post it was not able to download was older than 7 months.

        • Yep. Deleted all 64 WP posts and then went into Instagram and archived one of the two consecutive multi-image posts, and then started the import up again, and it successfully imported all of my single-image posts from Instagram. There were about a half dozen multi-image posts that I had made, and it didn’t import any of those. But I’d still consider this a pretty big success. Thanks so much for creating this plugin!

  21. The plugin was working just fine until it stopped importing automatically. I tried to import manually and then it went kaput. It won’t let me uninstall it from WordPress, so I went ahead and deleted it from cpanel on my server. When I reinstall it by uploading it again to my site and then activate it, I only see my username and everything else is blank. What I don’t understand is why my user is still hanging in there after the unistall/einstall. It’s not showing up on my IG authorized apps either. It looks like I haven’t deleted all necessary data from my cpanel and some info is still there? Maybe that’s why a reinstall won’t fix the problem? I’m quite a techie, but not that advanced. Please help. Thank you.

  22. Do you have a list of all available tags that can be used during import so I can customize the post title and description.


  23. Hi Justin, thanks for the great plugin! As a few other users have noticed, the auto-import function no longer works. I even tried adding this plugin (Scheduled Post Trigger) but it didn’t help.

  24. Thank you for making this plug in! I’m so glad to be able to import Instagram to my blog! But I don’t understand how to specify a title for my blog post from Instagram. The way it’s set, it puts my entire text from my Instagram post as the title. Is there a way to make it import only the first sentence, or say the first 6 words, as the title?

  25. Hi!
    Thanks for the great plugin!

    Everything works, but I have one problem – when i have a several photos in one post in instagram.
    Tell me please how i can import if post in instagram have a few photos?

  26. Hi. Just updated to latest version.

    It works fine but not with: Jetpack by WordPress.com

    Just a heads up re: the plugin clash.

  27. Amazing plugin and exactly what I was looking for. Problem I’m having though; when I import an IG post that has multiple pictures, I am getting multiple copies of just the first picture in the set. Is there any way I can fix this?

  28. Super plugin. Out of your control I’m sure, but I think changes to Instagram recently mean your gallery option is currently broken.
    I see a few users complaining on the WordPress site that gallery posts are just multiples of the first image. I’m experiencing this myself. I don’t think your plugin has changed in a while so I suspect it’s an instagram change that’s caused this!


Fast, secure WordPress hosting is provided by WP Engine.