Search Over 30,000 FREE Plugins from the Official WordPress Plugin Directory Repository

Image Widget

A simple image widget that uses the native WordPress media manager to add image widgets to your site.

A simple image widget that uses the native WordPress media manager to add image widgets to your site.

  • MU Compatible
  • Handles image resizing and alignment
  • Link the image
  • Title and Description
  • Very versatile. All fields are optional.
  • Upload, link to external image, or select an image from your media collection using the built in thickbox browser.
  • Supports override of template so that you can override the template for your theme!
  • Responsive

This plugin is actively supported and we will do our best to help you. In return we simply ask 3 things:

  1. Help Out. If you see a question on the forum you can help with or have a great idea and want to code it up and submit a patch, that would be just plain awesome and we will shower your with praise. Might even be a good way to get to know us and lead to some paid work if you freelance. Also, we are happy to post translations if you provide them.
  2. Donate - if this is generating enough revenue to support our time it makes all the difference in the world.
  3. Support us by buying our Premium plugins. In particular, check out Events Calendar Pro and Event Tickets Plus.

Check us out on GitHub in case you want to add some pull requests or a fork!

Author Modern Tribe, Inc.
Contributors ModernTribe, peterchester, borkweb, zbtirrell
Tags ad, admin, arabic, banner, brazilian portuguese, dutch, german, hebrew, image, italian, japanese, polish, resize, sidebar, simple, spanish, Swedish, thickbox, upload, widget, widget-only
  1. image-widget screenshot 1

    Image Widget admin screen.

  2. image-widget screenshot 2

    Media manager integration.

  3. image-widget screenshot 3

    Image Widget on the front of a plain WordPress install.


  1. In your WordPress administration, go to the Plugins page
  2. Activate the Image Widget plugin and a subpage for the plugin will appear in your Manage menu.
  3. Go to the Appearance > Widget page and place the widget in your sidebar in the Design

If you find any bugs or have any ideas, please visit the forum for questions or comments


  • PHP 5.2 or above
  • WordPress 3.5 or above


  • Translations - fixed compatibility with
  • Translations - restored the pot file for easier community translations
  • Tweak - fixed a typo
  • Tweak - Minor code cleanup


  • Feature - Include registered image sizes in the list of selectable items (props to aaemnnosttv for the pull request!)


  • Feature - Removing Freemius. Interesting experiment, but ultimately, not our cup of tea. Thanks for sticking with us!


  • Security - Prevent direct access to directories (thank you @ramiy)
  • Translations - Remove po/mo files, migrate to language packs
  • Feature - Add support for the rel attribute
  • Feature - Adding an opt-in integration with Freemius


  • Tweak - Added support for an id attribute on links (Props to amyh for the work on this!)


  • Tweak - Retiring the use of PHP 4 style constructors


  • Remove accidentally deployed image size update.


  • Fix image stretching bug in admin (Thanks @kyleunzicker)
  • Add polish translation (thank you @difreo)
  • Add hebrew translation (thank you Ariel Klikstein)
  • Add german translation (thank you Daniel Schmidt)
  • Fix "Alt" text in the widget source to use actual "Alt" text (thanks @adoliver and @Degas)


  • Responsive support in honor of Josh Broton's WordCamp SF talk about responsive design. max-width now defaults to 100%;


  • Add Spanish translation (thank you @mzaweb)


  • Rename all language files and implement a couple more minor language bug fixes a la @understandard
  • Added support for the constant 'I_HAVE_SUPPORTED_THE_IMAGE_WIDGET' to turn off the message that appears after upgrading. (@crienoloog, i hope this puts a smile on your face.)


  • Added Japanese (and fixed a minor language string bug - thank you @understandard)
  • Added Arabic (thank you @modmenpc)


Super minor fix to enable saving of a blank caption. (thanks @crdunst)


Fixed javascript bug caused by log message.


Fix oversized screenshot.


Language updates:

  • Brazilian Portuguese (Thank you @guhemama)
  • Spanish (Thank you @javiandgo)


  • Significant upgrades to support the new WordPress media manager (Thank you @kyleunzicker, @dancameron, @dudekpj, @JakePT)
  • Significant improvements the administrative user interface.
  • Abstracted support for older versions of WordPress so that that we don't break old versions with this upgrade (Though there's no reason you should up grade this widget and NOT your WP install! You should always keep WordPress core up to date!)
  • Added 'image_widget_link_attributes' filter to easily process link attributes and to default to having the link 'title' be the 'alt' or 'title' content. (Thank you @ZeroGravity, @pixelyzed, and @javiandgo)
  • Updated Translations ** Swedish (Tomas Lindhoff ** Dutch (Presis ** Italian (@maxgx)


  • Added italian translations courtesy of @maxgx


  • Add filters so that people can more easily adjust the output of the widget as per @TCBarrett's request.




  • Fix javascript bugs in the widget admin UI. ( thanks for filing this @joo-joo )
  • Fix notices in php error log.
  • Add widget description filter $args and $instance ( thanks @jeffreyzinn )
  • Fixed localization and renamed key to 'image-widget'



  • Remove extra esc_attr() from the $title display. (Thank you @romaspit)


  • Add minor security updates.
  • Update readme, thumbnails and other minor descriptors.


  • Fix to allow the widget to work in the non-async (browser) uploader. Props Bjorn Wijers


  • Yet another minor JS fix to hopefully address issues of lightbox not working


  • Fix JS typo.


  • Minor JS fix to hopefully address issues of lightbox not working
  • Use new the new jQuery.fn.on method for forward compatibility.


  • Minor bugfix courtesy of Takayuki Miyauchi (@miya0001)
  • Polish translation courtesy of Łukasz Kliś


  • Update javascript to work with the new version of WordPress (thanks Matt Wiebe!!! @mattwiebe)
  • Added Japanese translation courtesy of Takayuki Miyauchi (@miya0001)


  • Add HTTPS support courtesy of David Paul Ellenwood (DPE@SGS)


  • Added Swedish translation courtesy of Tomas Lindhoff (@Tomas)


  • Added javascript conflict prevention code thanks to @rcain.


  • Added French translation courtesy of Dominique Corbex (@Domcox)


  • Added Portuguese translation courtesy of Gustavo Machado


  • Fix image widget public declaration bug.


  • Abstract views for widget output and widget admin.
  • Support theme override of the widget output! Now you can layout the widget however you'd like.
  • Added filter to override template call.


  • Fixed Wordpress 3.0 bugs. (Thanks @kenvunz)


Fixed PHP 5 bug. Removed 'public' declaration. Thanks @mpwalsh8, @jleuze, @PoLaR5, @NancyA and @phoney36


  • Added support for ALT tags. If no alt tag is entered the title is used.


  • Added German language support (Thank you Rüdiger Weiß!!!)


  • Fix bug: XHTML Compliance (thanks HGU for offering a patch and thanks @webmasterlistingarts for filing the bug)
  • Replaced <p> with <div> in description to also improve XHTML compliance.


  • Fix bug: php4 reported error: PHP Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' (thanks @natashaelaine and @massimopaolini)


  • Fix bug: improve tab filters.


  • Fix bug: update tabs filter to not kill tabs if upload window is for non widget uses.


  • Remove the "From URL" tab since it isn't supported.
  • Replace "Insert into Post" with "Insert into Widget" in thickbox.


  • Fix Dean's Fcuk editor conflict. (Thanks for the report Laurie @L_T_G)
  • Fix IE8 bug (Remove extra comma from line 66 of js - thanks for the report @reface)
  • Update functions and enqueued scripts to only trigger on widget page.


  • Fix crash on insert into post.


Thank you @smurkas, @squigie and @laurie!!! Special thanks to Cameron Clark from a.k.a @capnhairdo for contributing invaluable javascript debugging skills and throwing together some great code.

  • PHP4 compatibility
  • Tighter integration with the thickbok uploader attributes including caption, description, alignment, and link
  • Tighter image resize preview
  • Add Image link becomes "Change Image" once image has been added


  • Minor description changes


  • Fixed the broken "Add Image" link (THANK YOU @SMURKAS!!!)


  • Added PHPDoc comments
  • Temporarily fixed install bug where no image is saved if resize is not working. (thank you Paul Kaiser from Champaign, Il for your helpful QA support)


  • Added 'sp_image_widget' domain for language support.


  • Completely remodeled the plugin to use the native WordPress uploader and be compatible with Wordpress 2.8 plugin architecture.
  • Removed externalized widget admin.


  • Update
  • to be $before_widget and $after_widget (Thanks again to Lois Turley)


  • Update <div> to be <li> (Thanks to Lois Turley)


  • Fixed missing DIV close tag (Thank you Jesper Goos)
  • Updated all short tags to proper php tags (Thank you Jonathan Volks from Mannix Marketing)


  • Link Target


  • Multi widget support
  • WP 2.7.1 Compatibility
  • Class encapsulation

Where do I go to file a bug or ask a question?

Please visit the forum for questions or comments


The built in template can be overridden by files within your template.

Default vs. Custom Templates

The Image Widget comes with a default template for the widget output. If you would like to alter the widget display code, create a new folder called "image-widget" in your template directory and copy over the "views/widget.php" file.

Edit the new file to your hearts content. Please do not edit the one in the plugin folder as that will cause conflicts when you update the plugin to the latest release.

New in 3.2: You may now also use the "sp_template_image-widget_widget.php" filter to override the default template behavior for .php template files. Eg: if you wanted widget.php to reside in a folder called my-custom-templates/ and wanted it to be called my-custom-name.php:

add_filter('sp_template_image-widget_widget.php', 'my_template_filter');
function my_template_filter($template) {
    return get_template_directory() . '/my-custom-templates/my-custom-name.php';


There are a number of filters in the code that will allow you to override data as you see fit. The best way to learn what filters are available is always by simply searching the code for 'apply_filters'. But all the same, here are a few of the more essential filters:


This is actually a pretty typical filter in widgets and is applied to the widget title.


Another very typical widget filter that is applied to the description body text. This filter also takes 2 additional arguments for $args and $instance so that you can learn more about the specific widget instance in the process of filtering the content.


Filters the attachment id of the image. Accepts additional $args and $instance arguments.


Filters the url of the image displayed in the widget. Accepts additional $args and $instance arguments. THIS IS DEPRECATED AND WILL EVENTUALLY BE DELETED


Filters the display width of the image. Accepts additional $args and $instance arguments.


Filters the display height of the image. Accepts additional $args and $instance arguments.


Filters the inline max-width style of the image. Hint: override this to use this in responsive designs :) Accepts additional $args and $instance arguments. Return null to remove this css from the image output (defaults to '100%').


Filters the inline max-height style of the image. Accepts additional $args and $instance arguments. Return null to remove this css from the image output (defaults to null)


Filters the selected image 'size' corresponding to WordPress registered sizes. If this is set to 'tribe_image_widget_custom' then the width and height are used instead. Accepts additional $args and $instance arguments.


Filters the display alignment of the image. Accepts additional $args and $instance arguments.


Filters the alt text of the image. Accepts additional $args and $instance arguments.


Filters the url that the image links to. Accepts additional $args and $instance arguments.


Filters the link target of the image link. Accepts additional $args and $instance arguments.


Filters a list of image attributes used in the image output. Similar to 'wp_get_attachment_image_attributes' Accepts $instance arguments


Filters a list of attributes used in the image link. Similar to 'wp_get_attachment_image_attributes' Accepts $instance arguments

Have You Supported the Image Widget?

If so, then THANK YOU! Also, feel free to add this line to your wp-config.php file to prevent the image widget from displaying a message after upgrades.


For more info on the philosophy here, check out our blog post

Version 4.3

Requires WordPress version: 3.5 or higher

Compatible up to: 4.4.7

Last Updated 10 Feb 2017

Date Added: 26 Jul 2008

Plugin Homepage


4.9 stars
286 ratings


Not Enough Data

Works: 0
Broken: 0