Compatibility and Integrations
External Images is designed to sit quietly underneath the tools you already use to build and populate a WordPress or WooCommerce site. Rather than being a destination in its own right, it changes how WordPress resolves featured images, galleries and variation images so that they can live on a third party or affiliate CDN, stored in the external_image_url post meta, instead of being downloaded into your media library. This page ties together the plugins, themes and infrastructure External Images works with, and points you to the dedicated article for each one.
Affiliate feeds: Datafeedr
If you build affiliate sites with Datafeedr, External Images stops Datafeedr from downloading and importing images to your server. Datafeedr normally leaves images alone when product sets run, but then downloads and imports the image (creating multiple resized copies) the first time each product is viewed anywhere. On a large catalogue that both slows down archive pages and consumes a lot of disk. Enabling Prevent Datafeedr Image Import under Settings, External Images tells the plugin to use the affiliate CDN URL directly instead. It hooks Datafeedr at runtime (removing its own image action and filtering dfrcs_image), so even Datafeedr comparison sets, which already use external images, are spotted and served from the CDN. Because those comparison set images are hosted off-site and often over plain HTTP, they can also be pushed through the SSL proxy described below. Datafeedr exposes two image URLs (merchant_image_url and _dfrps_featured_image_url) and the plugin can be told to check both and use the largest. See the Datafeedr Integration article for the full setup.
Bulk imports: WP All Import
The biggest speed win comes at import time. When you import products or posts with featured images the normal way, WordPress downloads each full size image and generates every registered thumbnail size, which is heavy on CPU and disk. External Images sidesteps that entirely: you map your image URLs to the external_image_url custom field (pipe separated, first image becomes the featured image) rather than importing them as images, and WP All Import then treats them as plain text meta. The plugin spots the populated field and builds the external featured image and gallery on first view. It detects WP All Import runs (via the import_id parameter) and avoids interfering with its thumbnail handling. Galleries, captions, alts and titles, and a separate gallery_urls field are all supported. This is the import-speed integration and it is documented in full in the How to alter import jobs to import external images article.
Mapping image URLs to a plain text meta field, rather than importing them as images, is what removes the download-and-resize bottleneck. On a large or frequently refreshed feed this is the single biggest reason to run External Images alongside your importer.
WooCommerce products, galleries and variations
External Images is built with WooCommerce in mind. It filters the WooCommerce image and gallery resolvers, including woocommerce_product_get_image_id, woocommerce_product_get_gallery_image_ids and woocommerce_product_variation_get_gallery_image_ids, so product images, gallery images and per-variation galleries all resolve to external URLs. Variation image switching is handled over admin-ajax (the ei_get_variation_images action) so the gallery updates as the shopper picks options. Several constants tune the behaviour: EI_ADD_FEATURED_IMAGE_TO_GALLERY, EI_SHOW_VARIATION_IMAGES_IN_MAIN_GALLERY, EI_GRAB_PARENT_GALLERY_IF_NO_GALLERY and EI_VARIATION_GALLERY_WRAPPER_CSS (the CSS selector for your theme’s gallery wrapper, defaulting to .woocommerce-product-gallery, with .rtwpvg-images and .woo-variation-product-gallery noted as alternatives for popular variation-gallery plugins). Variation JS can be disabled from the settings page if your theme needs it. To set or change these images by hand, see Changing external images for WooCommerce products manually.
WooCommerce Advanced Bulk Edit
External Images is compatible with the WooCommerce Advanced Bulk Edit plugin, so you can view and edit the External Image URL as a column alongside your other product fields and bulk edit image URLs across many products at once. Edit the External Image URL field itself rather than clicking the image thumbnail, which would trigger a normal WordPress upload. Full step by step instructions are in the WooCommerce Advanced Bulk Edit Compatibility article.
Image resizing: Photon
Because external images are not attachments, WordPress cannot generate thumbnail sizes for them. External Images offers optional resizing through the Jetpack Photon service so your thumbnails are served at the right size from Photon’s CDN. Enabling Photon switches off the plugin’s CSS image resizing. See the Photon image resizing article for the Jetpack setup and how thumbnail sizes are read from your theme and WooCommerce settings.
Themes
External Images works with standard WordPress and WooCommerce themes out of the box, and carries dedicated support for a few that store or render images in their own way.
- WoodMart: the plugin detects the WoodMart theme and feeds variation galleries into WoodMart’s own gallery, respecting its variation_gallery option and applying the woodmart_single_product_gallery_image_class filter so images carry the theme’s expected classes.
- Real estate themes: Houzez, RealHomes Pro and WPResidence each have a dedicated demo (the External Images demo with Houzez Theme, External Images demo with RealHomesPro Theme and External Images demo with WPResidence theme articles). Houzez has the deepest code-level support, because it reads property galleries from the fave_property_images meta key: the plugin overrules the MetaBox API filters (rwmb_meta and rwmb_meta_type) and the fave_property_images lookup to feed external images in. Those MetaBox filters can be turned off from the settings page if they cause a conflict. For the interaction between Houzez’s various gallery layouts and External Images, see the Houzez Theme Gallery Display Options article. WPResidence support includes fixing the admin property listing column. RealHomes Pro is supported through the plugin’s general attachment and gallery filters rather than a theme-specific hook.
SSL, Cloudflare and the image proxy
Serving images from a third party CDN can mean mixing plain HTTP images into an HTTPS page, which browsers block as mixed content and which social scrapers and SEO tools dislike. External Images includes an SSL proxy (ssl-proxy.php) and a Proxy All Images option that serves external images from your own domain instead. Proxied images are downloaded once and cached under wp-content/uploads/external-images/ so repeat views are served from disk. The proxy can be disabled entirely with the EI_NEVER_ATTEMPT_PROXY constant. The plugin also detects whether a remote host supports HTTPS and remembers the result, so many images can be served over HTTPS directly without proxying at all. It works behind Cloudflare, honouring the HTTP_X_FORWARDED_PROTO header for correct SSL detection.
Caching, CDN and hosting
External Images is friendly to page caching and CDNs because most of its work happens when a post is first viewed and is then remembered (the ei_converted flag records that a product’s URLs have already been processed, and image lookups use the WordPress object cache). If you use a cache primer, note that immediate image mapping can help avoid a known Cloudflare cache-priming edge case. The proxy’s on-disk cache under the uploads folder means proxied images can themselves be served and cached like any other file on your host or CDN. Because the images physically live on the affiliate or third party CDN, your own hosting storage stays small even for very large catalogues, which is the whole point of the plugin.
On a catalogue of tens of thousands of products, the media library is often the largest single thing on the site. Keeping images external means backups, migrations and disk usage stay small no matter how big the catalogue grows.

Comments