Visual Portfolio, Posts & Image Gallery


Create beautiful, clean, and powerful photo galleries and portfolio layouts using the Visual Portfolio plugin. It is easy for simple photo galleries, but powerful enough for professionals. Whether you’re a photographer, agency, or anything in between, Visual Portfolio will boost your online presence.

We tried to make for you a convenient visual block editor for your gallery, portfolio, or any custom post type with support to various layouts such as Masonry, Justified, Tiles, Grid, and Carousel.


Visual Gallery Builder

Build your portfolio and galleries with no coding knowledge. Thanks to Gutenberg page builder you are able to create and customize galleries visually.

Optimized to be Fast as Native

Despite the rich functionality, the Visual Portfolio is optimized as much as possible, to be fast and lightweight.

All scripts and styles are loaded only when they are needed for the current page that displays your gallery. Pictures are not loaded in the main thread due to lazy loading. Moreover, our plugin is compatible with third-party WebP providers and image optimization plugins.

Smart adaptive image sizes fully supported.


Our gallery plugin shipped with popular layouts such as Masonry and Justified (Flickr). Every feature optimized and works seamlessly with all of these layouts, you just need to set up and go with no headache. See it in action:

Visual Effects

Showcase your portfolio items ang gallery images with clean and beautiful visual styles. See it in action:

Easily Customizable

The gallery block with live preview includes a lot of design settings that are point-and-click, no coding knowledge required. If you’re a bit more adventurous, the custom CSS module and PHP filters are set up to be easily used by developers.

Portfolio Post Type

Custom post type portfolio will ensure all your portfolios to keep in a single post type. In this way, you can distinguish your portfolios from other post types. Taxonomies are used to categorize your portfolio types, it will help you to group and sort your portfolios.

Photo Galleries

You can also create galleries using image sets right inside block editor. Just drop your images and gallery is ready.

Powerful Lightbox

Visual Portfolio uses only modern solutions, and lightboxes are not an exception. High performance, mobile optimization, retina-ready, and a wide range of features available in Fancybox and PhotoSwipe plugins, that you can choose for your gallery lightboxes.

Mobile Optimized
Looks great on every device. Swipe to navigate, spread/pinch to zoom in/out supported on touch devices.

GPU Accelerated
Hardware accelerated animations for better performance and seamless user experience.

Smart Loading
Images are responsive and loaded progressively using lazy loading on demand.


Visual Portfolio plugin is built keeping SEO and performance in mind by defining proper structure and tags. Furthermore, due to optimization, it is lightweight and fast when it comes to page load.

More Features

  • Lightboxes for Visual Portfolio galleries and for standard WordPress images and galleries
  • Popup gallery vendors
    • Images
    • YouTube
    • Vimeo
    • more vendors available in PRO plugin
  • AJAX posts loading
    • Infinite Scroll
    • Load More button
    • Paged pagination
  • Filter gallery layouts by Category or custom taxonomy
  • Sort gallery items by date and title
  • Custom item gutters
  • Custom image sets
  • Custom posts type layouts (not only portfolio)
    • Posts by type
    • Posts by specific ID
    • Posts by taxonomies
    • Custom order
  • Images lazy load built-in – improves page loading speed
  • Custom CSS for each portfolio layouts
  • WPML and Polylang multi language support
  • RTL support
  • Elementor Page Builder support
  • WPBakery Page Builder support
  • Completely responsive and mobile ready – layouts automagically transforms to display perfectly on your screen size
  • CSS variables and templates system for theme developers


The Visual Portfolio plugin is also available in a professional version which includes more features and enhanced performance! Learn more.

Some neat PRO features

  • Social Integrations – automatically fetch posts for your social networks to display in gallery on your site
    • Instagram
    • Youtube
    • Vimeo
    • Flickr
    • Twitter
    • Dribbble
  • Stylish interaction effects
  • Instagram-like image filters for normal and hover states
  • AJAX Improvements
  • Advanced query builder settings
  • Additional popup gallery vendors
    • Instagram
    • DailyMotion
    • Facebook Videos
    • TikTok
    • Soundcloud
    • VideoPress
    • Twitch
    • Wistia
    • Self Hosted Videos
  • Find more features here –

If you don’t want any of the PRO features, but want to support us, this is the only way you may do it.


  • Gutenberg Blocks
  • Gutenberg Block Settings
  • Portfolio Items Admin


Automatic installation

Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of Visual Portfolio, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.

In the search field type “Visual Portfolio” and click Search Plugins. Once you’ve found our plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.

Manual installation

The manual installation method involves downloading our Visual Portfolio plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains instructions on how to do this here.


སྤྱི་ཟླ་དགུ་པ། 28, 2020
developers of this plugin have done a great job with its clean UI and fast loading, they have taken good care of small details also, I recommend it for multi-purpose usage of showing posts and images.
སྤྱི་ཟླ་དགུ་པ། 6, 2020
Literally I've build almost my entire website around this beautiful plugin. Easy to use, customizable and beautifully designed in comparison to all other gallery plugins I've seen. Highly recommended!
སྤྱི་ཟླ་བརྒྱད་པ། 4, 2020
Man this is a wonderful plugin. Integration with Gutanbarg, Carousal. It deserve a 5 star rating.
སྤྱི་ཟླ་བདུན་པ། 20, 2020
Wow, I'm very glad I found your plugin! Of course there are countless gallery plugins available, many of them very good, but the variety of presentation options, the extremely useful features, and the overall quality is just off-the-charts excellent! Having that many layouts that actually work smoothly is amazing. Your CSS and Ajax-y stuff is beautiful. At first it took me some time to grasp all the many available options in the editor block settings when sticking a gallery into the editor, but I found everything I needed in there, and a few things I hadn't even thought of. Thanks!!!! Dave
སྤྱི་ཟླ་བདུན་པ། 18, 2020
It's a professionally built Portfolio plug-in that is solid and supports more than you can imagine from a first glance. Just try it. Have to love the function to save your blocks so you can use it on multiple pages. Seeing this plug-in in action inspired me to pick up coding again and started to build my own wordpress theme, because I know "Visual Portfolio, Posts & Image Gallery" got me covered for most of the functions to showcase my work. I'd like to honor the creator for your generous contribution and amazing work. Thank you so much nk.
སྤྱི་ཟླ་བདུན་པ། 14, 2020
I have Visual Portfolio V.1.16 running on several websites and I give 5 stars for this great and clever plugin with many possibilities - far better than the rest! The only point I didnt like is that I could not duplicate layouts. But now I tried the update to the new version 2.2 - this is just not working. I cannot even put a title name for a new layout. Furthermore it changes existing layouts. For this version I would give 0 stars for now. But perhaps things will become better. If someone uses the old version - don't update!!!!
Read all 61 reviews

Contributors & Developers

“Visual Portfolio, Posts & Image Gallery” is open source software. The following people have contributed to this plugin.


“Visual Portfolio, Posts & Image Gallery” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Visual Portfolio, Posts & Image Gallery” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • fixed preloader SVG position
  • fixed preview loading error on some hosts


  • added support for Custom Hover image in PRO version
  • added Vertical Gap option
  • added icons to all categories toggles in editor
  • added Popup Gallery setting to disable “Click to Zoom”
  • added PHP filters to extend items: vpf_each_item_tag_name and vpf_each_item_tag_attrs
  • changed preloader animation (SVG logo with spinner)
  • changed item icon when click action is not popup gallery (display image icon instead of zoom)
  • changed image and layout settings dropdowns to modals
  • fixed conflict of lazy loading and Imagify WebP feature
  • fixed Tiles layout resize position bug
  • fixed WordPress images popup when used lazy loading from Autoptimize
  • fixed possibility to remove Items from Layouts control (items are required part for each layout, you can’t remove it
  • fixed align component UI in Layouts control
  • fixed iframe preview on some hosts
  • removed usage of deprecated jQuery ‘ready’ event in Settings
  • minor fixes


  • added legacy Swiper version, when Elementor plugin enabled (resolves conflict with it)
  • improved preview page code
  • fixed Justify layout JS error


  • changed lazy-loading attributes (use most popular data-src instead of custom attributes)
  • improved iframe gallery preview render code (prevent re-arrange animation when iframe loaded)
  • updated all vendor scripts to the latest versions
  • moved lazy loading to separate script (less page loading size, when you disable Lazy Loading feature in settings)
  • slightly improved performance by using raf-schd package
  • fixed Isotope re-layout when window resized and gallery items size changed, but container have static size
  • fixed iframe preview JS error
  • fixed slider arrow color variable name
  • minor changes


  • improved image lazyloading support for PRO plugin and social integrations
  • improved animated GIFs usage (we can’t use resized images, used full size only)
  • updated 3rd-party vendor scripts
  • moved posts Focal Point picker panel to Featured image selector panel (better UI)
  • fixed Focal Point image preview size on posts
  • fixed saved layout shortcode paste and Gutenberg transform to block


  • fixed gallery images displaying when Tiles + 0 gap used


  • added WPML config
  • added section with possibility to copy shortcode right inside Saved Layout editor
  • added notice to admin list with Saved Layouts (information about when to use Saved Layouts)
  • improved Emerge overlay skew transform
  • improved noscript images output
  • changed default popup gallery plugin to Fancybox
  • changed Gap styles output for Grid, Masonry, Tiles to CSS variables
  • changed editor preview warning time to 60 seconds
  • fixed Gaps styles compatibility with the latest Elementor update
  • fixed controls dynamic CSS render when no condition added
  • fixed Emerge overlay semi-transparent overlay background
  • fixed images popup gallery when WebP support enabled in 3rd-party plugins
  • minor changes


  • added Image Overlay setting on Emerge Style
  • added support for images filters in PRO plugin version
  • changed Emerge image transform from scale to translateY
  • fixed filter displaying in FireFox
  • fixed custom scrollbar initialization after ajax load
  • fixed Isotope event options variable
  • moved gallery items class from templates to internal code + added filter to let users extend this class string
  • removed native lazy loading from Visual Portfolio images where our JS lazy loading enabled (prevent possible conflicts)
  • removed staggering animation script (simplified to use CSS only)
  • minor changes


  • added support for WordPress 5.5
  • added meta staggering animation for Fade and Emerge items style
  • added custom scrollbar for overlays with overflow (looks better, than system scrollbar)
  • added more wp actions in portfolio output (helpful for developers)
  • added iframe resize when Gutenberg preview device type changed
  • updated PRO plugin pricing plans. Added a single site license, which many users asked for
  • fixed custom aspect ratio select (set default value if value is empty)
  • fixed post taxonomies slug in the filter (fixes support for languages like Japanese, Chinese, Russian, etc.)
  • fixed possible JS error ‘jQuery is not defined’


  • added PRO version support
  • added overlay support for Classic gallery style
  • added options to change meta color, links color and links hover color for all items styles
  • added options to show gallery items overlay on hover only, on default state only and always
  • added version number to stored assets (may fix the caching issue, when users update to the latest version)
  • added vertical scroll to overlay meta data when overflow for Fade, Fly and Emerge styles
  • improved click action for popup gallery (don’t open popup if click on some meta links)
  • improved Play icon for video items
  • disabled possibility to close popup on page scroll
  • fixed renaming saved layouts possibility
  • fixed portfolio preview frame loading when WooCommerce Geolocation option enabled
  • fixed displaying Stretch option in Saved Layouts
  • fixed Author meta displaying when no author specified in image options
  • fixed custom taxonomies setting usage
  • fixed RTL check error in Isotope module when no items available
  • fixed disabled Gutenberg editor in some 3rd-party plugins/themes
  • fixed rare headers sent error
  • minor fixes


  • added RTL support
  • added images Focal Point picker
  • added styles to display overlays on items focus (helpful for screen readers)
  • added possibility to output inline tags inside titles and excerpt
  • added Video meta box for Gutenberg posts (using native Gutenberg API)
  • fixed images uploading in block (automatically add title and description)
  • fixed block id regeneration after edit page reload (resolves unnecessary post re-save requirement)
  • always add custom CSS tag even if no custom CSS available, to better render dynamic styles in preview
  • fixed Elementor widget problem with removing (usage of bad settings name id renamed to saved_id)
  • fixed URL output for item categories (use esc_url)
  • force enable Visual Editor on Saved Layouts for users, who disabled it
  • force change editor mode to Visual in Saved Layouts editor
  • minor changes


  • added possibility to change images aspect ratio for Masonry and Grid layouts
  • added Rel option in Click Action URL
  • added support for Author field in Images Content Source
  • added button for All Items per page (instead of telling users to use -1 value)
  • added CSS arrow to Filter and Sort dropdowns
  • added ‘class’ attribute in PHP filter vpf_each_item_args to let users extend classes of each items
  • improved custom CSS code sanitation
  • changed default font-size in Filter, Sort and Pagination
  • fixed SVG icons fill rule in templates
  • fixed gutenberg block key events (remove, clone, etc)
  • fixed click on dropdown elements in preview
  • fixed saved layouts id usage in classname
  • fixed dynamic bullets reload in preview
  • fixed Custom CSS dynamic update in preview
  • fixed Custom CSS code editor placeholder rendering
  • fixed adding image title and description automatically when add images in images content source
  • minor changes


  • fixed removing all images settings when editing gallery images
  • fixed bug, when Saved Layout value 0 or false resets to defaults (for example, items gaps)
  • fixed custom CSS escape symbol >
  • fixed popup image for the old Gutenberg image block structure
  • fixed setup wizard displaying in Saved Layouts
  • fixed retrieve registered value of Saved Layout
  • force enable Gutenberg editor for Saved Layouts to prevent conflicts with plugins, that uses Classic Editor
  • changed gallery images uploading control (added resorting, removing and adding new images, instead of default WordPress gallery edit tool)
  • changed tiles selector to modal component (better UI)
  • changed “Saved” menu item to “Saved Layouts”, as users couldn’t find it


! IMPORTANT for version 2.x – this is a major plugin upgrade. A lot of things were changed. We recommend you test it on a staging site first before update it on the production site.

Migration Notes:


  • updated overall UI
  • updated all gallery items styles
  • updated all filters and pagination styles
  • added full-featured Gutenberg block
  • added popup gallery support for default WordPress images and galleries (enable it manually in plugin settings)
  • added new UI component – Layout Elements, where you can change Filter, Sort, Items and Pagination
  • added Minimal styles for Filters, Sort and Pagination
  • added images corner radius option
  • added offset option in Posts Query
  • added more Order By options in Posts Query
  • added Current Query option
  • added new meta data to items: author, comments count, views count, reading time
  • added rel="noopener noreferrer" to links with target attribute
  • added transforms from default Gallery and Latest Posts blocks to Visual Portfolio block
  • added Scroll to Top option for Paged pagination
  • added option to hide Load More and Infinite pagination when reached end of lists
  • added new templates for wrappers and slider elements
  • added settings to disable built-in images lazyloading
  • improved lazy loading placeholder animation background styles
  • enabled comments on Portfolio custom post types by default
  • changed all styles to use CSS Variables
  • changed items styles default overlay background color to black
  • changed Layouts editor old interface to Gutenberg
  • changed default Items Style to Fade
  • changed tiles responsive styles from margin to padding (better for developers)
  • changed sr-only classname usage to vp-screen-reader-text
  • changed registered image sizes height limitation
  • changed all ul elements to div to prevent conflicts with theme styles
  • removed FontAwesome, all icons moved to pure SVG
  • removed align options from Filter, Sort, and Pagination (used layout elements align instead)
  • removed options, that allowed users to change icons classes in layout (all icons moved to templates)
  • fixed titles align in default themes
  • fixed assets loading order in preview
  • fixed z-index CSS variable for Fancybox
  • fixed swiper fade effect slide width
  • moved all SVG icons to separate templates to let developers overwrite it
  • renamed Portfolio Layouts to Saved
  • renamed Default Items Styles, Filter, Sort and Pagination to Classic
  • a lot of minor changes


  • preview moved to templates/preview, so you can override it from themes
  • use base64 for placeholders
  • fixed posts output when taxonomies relation set to AND and no taxonomies selected
  • fixed Grid JS error if used old Isotope script (for example in Bridge theme)
  • fixed notices in PHP 7.4


  • added style fixes for some Twenty themes
  • added :focus styles in templates, where used :hover
  • disable filter output if no taxonomies found
  • reverted back taxonomies public queryable (users used it for permalinks)
  • fixed grid layout position calculation after filtering
  • fixed PhotoSwipe jQuery is not a function error


  • added preview preloader in layouts editor
  • added imagesloaded after AJAX loaded event (fixes Safari images stacking)
  • changed images placeholders to SVG (less code, better performance)
  • prevent ajax loading if requested URL is currently loaded
  • fixed Avoid Duplicate Posts option if used Post-Based with Custom Post IDs
  • fixed WP Smush lazyload conflict
  • fixed infinite scroll loading 2 next pages at a time
  • fixed Grid items position in FireFox
  • fixed stretch option usage in preview (just disable it)
  • fixed Elementor widget output on frontend
  • fixed post-based taxonomies when posts don’t contain it
  • fixed AMP plugin integration PHP notices
  • fixed AJAX loading with changed layout settings in editor preview
  • fixed error in layouts preview when no items loaded
  • a lot of code improvements for upcoming PRO plugin


  • fixed errors when upload images without width or height (for example, SVG)


  • added widget for Elementor
  • added settings to change popup gallery background color
  • added support for checkboxes and toggles in custom controls styles (needed for custom items styles)
  • added tree of nodes with classes to better coding in Layouts Custom CSS
  • better Gutenberg block preview (no more transform scale for iframe)
  • fixed Video Post Format URL metabox display in Gutenberg
  • fixed Video Popup in post with format video, but without post thumbnail
  • fixed layouts editor styles loading bug when browser tab is not active
  • additional attributes for taxonomies in templates



  • added settings to change registered image sizes
  • added info about sort shortcode in Layouts metaboxes
  • improved assets loader (load only required css and js)
  • changed PhotoSwipe A tags to Buttons
  • removed height limitation for Images control in Layouts editor
  • fixed slider thumbnails ajax loading
  • fixed tiles wrong position calculation
  • fixed Isotope gallery re-layout when WPBakery Page Builder resized full-width row
  • updated FontAwesome
  • updated LazySizes
  • updated Swiper (no more Internet Explorer support)



  • updated FontAwesome
  • fixed portfolio gallery inside Tabs and Accordions
  • fixed Editor role capabilities (add a possibility to manage portfolio items)
  • fixed published date output for Content Source -> Images
  • fixed Gutenberg block list of all available layouts


  • added Fancybox support
  • added option to avoid posts duplication
  • added posts classes (such as hentry) on portfolio items
  • added options to load images title and description automatically from meta data
  • added support for WP Smush and WP Rocket lazy loading options
  • added Items Minimal Height option for Slider layout
  • added new WordPress filters:
    • vpf_extend_image_controls
    • vpf_extend_query_args
    • vpf_extend_filter_items
    • vpf_extend_sort_items
  • improved placeholders function performance
  • changed single post tag to artricle
  • prevent lazy loading if data-src attribute already added on the image (fixed conflicts with some 3rd-party plugins)
  • prevent lazy loading on AMP pages
  • fixed Jetpack jetpack_lazy_images_skip_image_with_attributes filter name


  • fixed tiles size on small screens
  • fixed fly effect position (on 4k screens slightly visible part of overlay)


  • fixed Vimeo and other vendors video popup loading
  • fixed Tiles sometimes wrong position calculation (for example in 2|2,1|1,1|1,1|)
  • fixed overlay position bug in default theme in Fade and Fly effects


  • changed video oembed loading method
    • no more php oembed since it may be too heavy to load pages (used JS instead)
    • no more video thumbnail loading if no featured image specified in post
  • fixed portfolio categories and tags capabilities
  • fixed <a> tag in fly and fade effect when all meta disabled


  • fixed FireFox image blinking in Fade effect
  • fixed name of sorting by date items (‘newest’ is actually ‘oldest’)
  • fixed conflict with elementor carousel event
  • fixed conflict with SG Optimizer (remove noscript tag)
  • fixed w3 validation errors (figcaption tag may only be a child of figure tag)


  • added Sort controls
  • added Filter and Sort Dropdown styles
  • added ‘Portfolio Manager’ and ‘Portfolio Author’ roles
  • added portfolio custom taxonomies filter in admin page
  • added slider thumbnails support
  • added images and show it if javascript disabled (mostly for screen readers)
  • added photoswipe zoom effect
  • disabled image popup on items with custom URL
  • moved popup title and description settings to Layouts options
  • changed popup gallery tap actions (don’t close on tap and toggle popup controls instead)
  • fixed Elementor popup gallery conflict
  • fixed roles for portfolio post types
  • fixed IE carousel items invisible
  • fixed gallery items gap conflict with Elementor
  • fixed carousel “Slides per view” auto option with static or dynamic “Items height” option
  • fixed slider fade effect + default items style items width
  • fixed rtl admin layout styles


  • added Grid layout
  • added Order by and Order direction for Images Content Source
  • added Pause on Mouse Over option in Slider with Autoplay
  • added Free Scroll Sticky option in Slider
  • added figure and figcaption tags in portfolio items in layouts
  • added ‘author’ supports to portfolio posts
  • added new jQuery events ‘beforeInitIsotope’, ‘beforeInitFjGallery’, ‘beforeInitSwiper’, so the options could be changed before plugins init
  • changed meta blocks top margin
  • fixed post-based custom taxonomy and specific posts selector saving in WordPress 5.1
  • fixed error because of mb_strtolower existence
  • fixed popup gallery when Attachment used as post type
  • fixed fade meta max width in IE11
  • fixed Gutenberg block preview styles
  • removed code for paged single portfolios (as portfolio archives uses our own GET variable)


  • added WP 5 compatibility in readme
  • added support for Ghost Kit 2.0 update
  • fixed popup gallery height when admin bar showed


  • added page-attributes in portfolio post type (Order attribute)
  • fixed Menu Order in post based source (didn’t work at all)
  • possible fixed iOs isotope images position (sometimes broken)


  • changed lazyload image preloader z position (not able to click on items links)
  • fixed Swiper styles 404
  • fixed PhotoSwipe top position when showed WP admin bar
  • fixed PhotoSwipe incorrect unique classname (not able to destroy it)


Note: Don’t forget to clear cache after plugin update. Changed portfolios with pagination enabled, so it may be broken.

  • added “Mousewheel Control” option in Slider
  • added fade-in transition for lazyloaded images
  • added automatic fill title and description fields when new images added in Images Content Source
  • added gutenberg block transform from shortcode
  • updated vendor plugins
  • fixed carousel position on first load (mostly on mobile devices)
  • fixed portfolio with custom taxonomies in post based + OR relation and filter active
  • fixed paged portfolios load on single posts and in archives. Now uses own get variable ‘vp_page’


  • added wp actions in registering controls and metaboxes
  • updated Conditionize script


  • fixed Click Action Target default value


  • added lazyload preloader placeholder animation
  • added Target option for Click Action URL
  • added ghostkitSR support in Gutenberg block (animate on scroll functionality)
  • added condition to show meta block in templates (less html if disabled showing meta data)
  • added possibility to resize custom CSS Editor
  • added Menu Order in post based source
  • added Mask property in control styles (for developers)
  • added filters to extend default controls for layouts, items styles, filters and paginations
  • added filter for control arguments vpf_print_layout_control_args (developers may change controls settings in layouts editor)
  • changed condition script for settings in layout editor, should improve performance
  • changed popup gallery z-index to 1500 (like in WooCommerce)
  • changed initialization method to Mutation Observers (portfolio will init automatically after ajax load)
  • removed wp_unslash from custom CSS code save (because some specific styles removed)
  • prevent session start in admin pages (this only needs in paged with random order)
  • fixed default sorting of selected/excluded posts and taxonomies in post based content source
  • fixed content source images disappear when in image meta added ” symbol
  • fixed layouts fetch error in Gutenberg 4.2
  • fixed flex-wrap in fade style
  • fixed lazyload images in IE11
  • fixed popup gallery in IE11
  • fixed validation error when trying to use URLs like “/something” in content source images
  • minor changes


  • added link to Documentation in admin menu
  • added vpf_extend_tiles filter
  • fixed custom jquery events triggering


  • fixed categories show in filter
  • fixed fade and fly items flex-wrap


  • added support for Gutenberg 3.7.0
  • added setting for custom taxonomies to show in portfolio filter
  • added support for WooCommerce categories in portfolio filter
  • added settings for the title and description popup gallery caption
  • added Read More button option for Default Items Style
  • added dropdown in top admin menu with the list of available portfolios on this page
  • added generation placeholders on the fly (no more need to regenerate thumbnails to get placeholder)
  • fixed popup image title color (were dark)
  • fixed popup video play after going to the next slide



  • fixed font-awesome dependency


  • added portfolio preview iframe in Gutenberg block
  • changed portfolio default image sizes (since we use Lazyload, we can use larger image sizes)
  • updated FontAwesome to 5.2.0
  • fixed Slider styles when used 2 sliders on the page
  • removed imagesloaded dependency
  • disabled ‘with_front’ in portfolio post type (thanks to


  • additional check for isotope and fjGallery existence
  • added init outside of ‘ready’ event (possible faster initialization)
  • fixed lazyload possible conflict with the 3rd-party themes/plugins


  • fixed validator error “The sizes attribute may be specified only if the srcset attribute is also present”


  • NOTE: strongly recommend to regenerate thumbnails on your site using this plugin
  • added lazy loading for images
  • added will-change styles in templates (animations should work smoother)
  • added new Tiles
  • added pagination paged arrows options
  • added align wide and full options in Gutenberg block
  • added support for custom controls styles (developers could create their own controls and add custom styles). Read FAQ for more information
  • added custom control options in filter templates (helpful for developers)
  • added pagination style and possibility to extend it from 3rd-party code
  • added portfolio item comments number data for templates
  • added ‘resized’ event for developers
  • always enqueued main style on all pages
  • changed carousel arrows shadow
  • fixed validation errors (added space between data attributes)
  • fixed video popup position
  • fixed portfolio bugged reload in preview
  • renamed nk-spinner to vp-spinner
  • removed double slash in custom theme template styles urls
  • removed imagesloaded usage


  • added Slider (+ Carousel, Coverflow) layout
  • added capabilities check when generated preview page
  • improved responsive calculation algorithm
  • disabled preview page caching by some popular caching plugins
  • fixed isotope newly loaded items jumping
  • fixed conditions usage on controls in 3rd-party extensions
  • fixed PHP notices when trying to extend portfolio options
  • fixed Data source selected item (was always Post selected)
  • fixed Default filter show
  • fixed Date format control UI
  • fixed confirmation message when leaving layouts editor without change


  • added check for template existance before include it (to prevent errors when 3rd-party devs don’t added templates)
  • fixed random order duplicates when used pagination
  • fixed errors in PHP < 5.5
  • disabled Infinite Load pagination in the Portfolio preview
  • changed templates inclusion to support 3rd-party extensions
  • removed background color from the load button when loading or no items
  • renamed all events prefix from vp to vpf


  • prepared code for extending from 3rd-party developers
  • fixed saving unchecked toggle values in Layouts editor (Show title, Show categories, etc…)


  • added filters to disable enqueued frontend plugins (see FAQ section)
  • added Custom URL option to custom images set
  • added support for negative number of items per page for custom images set (to show all available items on the page)
  • fixed custom images show when disabled pagination
  • fixed custom images filters count show


  • added Justified layout
  • added custom user images support in Content Source settings
  • added Gutenberg block to easily insert layouts
  • added Random order in Post-Based content source
  • added spinner to load more button
  • added setting to change portfolio slug
  • fixed video playing when popup were closed
  • fixed filter in post-based with taxonomies selected
  • fixed w3c validation error when enqueuing template styles
  • fixed specific posts selector ajax result
  • fixed publish button click (don’t show confirm alert)
  • changed “No More” button text
  • changed active filter buttons background color
  • updated FontAwesome to 5 version
  • minor changes


  • improved CSS editor (added autocomplete hints; selectors hint; showing errors; preventing save when editor has errors)
  • improved layouts editor interface
  • added shortcode for portfolio filter (you can use filter outside of portfolio wrapper)
  • added possibility to change date format
  • added frontend WPBakery Page Builder support
  • added support for post ordering plugins (Intuitive Custom Post Order)
  • fixed popup video jumping
  • fixed some php errors in preview
  • fixed photoswipe duplicates if on the page > 1 visual portfolio with popup gallery
  • fixed permalinks flush on activation and deactivation


  • fixed video format conflict with theme formats
  • fixed php error about undefined index
  • fixed buttons hover border issue in default themes


  • added support for oEmbed videos (YouTube and Vimeo supported)
  • added settings for popup gallery
  • added share button in popup gallery
  • added “Edit Portfolio Item” button in admin menu on frontend
  • added option to show filter items count
  • added option to show publised date in human format
  • added notice if no items found
  • added support for jetpack portfolio type filter
  • added portfolio tags support
  • updated color picker to support WordPress 4.9
  • fixed PhotoSwipe small images loading on mobile devices (performance improvements)
  • prevent load more click if href is empty
  • minor fixes and changes


  • fixed conflict with WooCommerce Photoswipe gallery


  • added ID in title to tinymce and visual composer dropdowns
  • fixed fly effect transition in Safari
  • fixed tiles filter jumping
  • fixed iframe height calculation if in theme set html height 100%;


  • added options to hide arrows and numbers from the paged pagination
  • added support for WPBakery Page Builder
  • added class attribute in shortcode
  • added excerpt field to the portfolio post type
  • removed enqueued portfolio scripts and styles from the admin builder
  • improved fly effect, now direction calculated more correct
  • changed all items-styles hover effects
  • fixed showing excerpt from excerpt post fields
  • fixed php short tag usage
  • fixed conflict with WPBakery Page Builder and old isotope plugin


  • fixed php enqueue errors


  • preview changed to iframe – now all the portfolio styles showed the same as on your website frontend. Now iframe reloaded when changed all options (Customizer experience here)
  • added wrapper to filter and pagination
  • added tinyMCE dropdown with list of visual-portfolio shortcodes
  • added CodeMirror for custom CSS field
  • added loading overlay
  • changed paged arrows to font-awesome
  • changed default templates style
  • changed popup gallery – now used image meta title and description
  • fixed popup gallery buttons style conflict with default WordPress themes
  • fixed styles rendering on initialization (without timeout now)
  • fixed isotope items animation and remove
  • fixed preloader opacity transition (added wrapper)
  • fixed showing paged pagination if no items
  • minor changes


  • added custom CSS field
  • added object-fit polyfill to support old browsers
  • added custom image sizes
  • added responsive
  • added wrapper to items layout
  • removed margin from main vp container
  • fixed array option retrieve error
  • minor changes


  • initial Release