# Visual Portfolio, Posts & Image Gallery #

* Contributors: nko
* Tags: portfolio, gallery, photo gallery, image gallery, wordpress gallery plugin
* Requires at least: 5.4
* Tested up to: 5.6
* Requires PHP: 5.5.9
* Stable tag: 2.10.3
* License: GPLv2 or later
* License URI: <http://www.gnu.org/licenses/gpl-2.0.html>

Modern gallery and portfolio plugin with advanced layouts editor. Clean and powerful gallery styles with enormous settings in the Gutenberg block.

## Description ##

**Gallery & Portfolio Plugin For WordPress**
★★★★★<br>

**Portfolio websites are the most popular nowadays.** We created <a href="https://visualportfolio.co/?utm_source=wporg&utm_medium=link&utm_campaign=demo" target="_blank">**Visual Portfolio, Posts & Image Gallery WordPress plugin**</a>, to help every creative, agency, or photographers get access to the powerful tools they need to showcase their beautiful works and attract more love from their potential and existing customers.

<a href="https://visualportfolio.co/?utm_source=wporg&utm_medium=link&utm_campaign=demo" target="_blank">See Live Demo</a> | <a href="https://visualportfolio.co/documentation/getting-started/?utm_source=wporg&utm_medium=link&utm_campaign=docs" target="_blank">Documentation</a> | <a href="https://github.com/nk-o/visual-portfolio" target="_blank">GitHub</a>

Create beautiful, clean, and powerful photo galleries and portfolio layouts using the Visual Portfolio gallery 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**.

### 🏆 Visual Gallery Builder ###

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

Convenient visual block editor with support to various layouts such as Masonry, Justified, Tiles, Grid, and Carousel. A **well thought out design, powerful features, and years of development** by the nK team make Visual Portfolio a game-changing Portfolio and Gallery plugin that will level the WordPress showcases playing field in your favor to help increase visitors engagement.

### 🚀 Optimized to be Fast as Native ###

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

Due to the modular code structure, all scripts and styles are loaded only when they are needed for the current page that displays your gallery. So, your pages will never load unused features.

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 in any gallery, created with Visual Portfolio plugin.

### 📱 Layouts ###

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:

* [Masonry Gallery](https://visualportfolio.co/masonry-image-filters/)
* [Justified (Flickr) Gallery](https://visualportfolio.co/justified-tilt-effect/)
* [Tiles Gallery](https://visualportfolio.co/tiles-custom-color/)
* [Grid Gallery](https://visualportfolio.co/grid/)
* [Slider Gallery](https://visualportfolio.co/slider/) (Fade, Carousel, Coverflow)

### 🎨 Visual Effects ###

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

* [Classic Style](https://visualportfolio.co/masonry/)
* [Fade Effect](https://visualportfolio.co/tiles-paged-pagination/)
* [Emerge Effect](https://visualportfolio.co/masonry-infinite-scroll/)
* [Fly Effect](https://visualportfolio.co/tiles-popup-gallery/)
* [Caption Move Effect](https://visualportfolio.co/masonry-caption-move/)

### ⚙️ Easy to Customize ###

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. Moreover, you can use these portfolios as a source for your showcase gallery using Visual Portfolio block.

### 💎 Posts Query Builder ###

Fine-tune the source of your galleries. Display posts, portfolios, and any other post types, filter by taxonomies, author, and date ranges, include or exclude specific posts, and much more options.

### 🖼️ Photo Galleries ###

Create galleries using image sets right inside block editor, just drop your images and the gallery is ready. You can create unlimited galleries with different styles, there is no limitation.

### ⚡ 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** <br> Looks great on every device. Swipe to navigate, spread/pinch to zoom in/out supported on touch devices.

**GPU Accelerated** <br> Hardware accelerated animations for better performance and seamless user experience.

**Smart Loading** <br> Gallery images are responsive and loaded progressively using lazy loading on demand.

**Social Sharing** <br> You can allow users to share photos on Facebook, Twitter, and Pinterest with social sharing buttons.

### 📹 Video and 🎵 Audio Support ###

Visual Portfolio plugin allows you to work with audios and videos within a single gallery. You just need to copy the URL of the video or audio and it will work automatically in the popup gallery. The full list with supported vendors see below (mostly thanks to the Pro plugin).

Supported Video Vendors:

* Youtube
* Vimeo
* IGTV (Instagram)
* TikTok
* Twitch
* Facebook Video
* DailyMotion
* Wistia
* VideoPress
* TED
* Rutube
* Metacafe
* Coub
* Self Hosted Video

Supported Audio Vendors:

* Spotify
* SoundCloud
* Mixcloud
* Beatport
* Self Hosted Audio

### 📈 SEO-Friendly ###

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.

### 🏳️ Multilingual ###

Visual Portfolio adds a new layer of compatibility for [WPML](https://wpml.org/). All blocks are compatible with it and ready for translation. <https://visualportfolio.co/documentation/multilingual/>

### 🛠 Built For Developers ###

Visual Portfolio gives you a wide range of filters and actions to customize every part of your gallery. Also, it allows you to overwrite templates and change it in the theme directory. Moreover, you can customize separate portfolio lists using custom CSS and CSS Variables.

### 🔥 Visual Portfolio Pro ###

> The Visual Portfolio plugin is also available in a professional version which includes more features and enhanced performance! [**Learn more about Visual Portfolio Pro**](https://visualportfolio.co/pro/?utm_source=wporg&utm_medium=link&utm_campaign=pro)
>
> In order to maintain the free version of the plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin. The Pro version allows you to:

* **Social Integrations**
Automatically fetch posts from your social networks to display in gallery on your site.

  * [Youtube](https://visualportfolio.co/social-youtube/)
  * [Instagram](https://visualportfolio.co/social-instagram/)
  * [Vimeo](https://visualportfolio.co/social-vimeo/)
  * [Flickr](https://visualportfolio.co/social-flickr/)
  * [Twitter](https://visualportfolio.co/social-twitter/)
  * [Dribbble](https://visualportfolio.co/social-dribbble/)
  * [Google Photos](https://visualportfolio.co/social-google-photos/)

* **Stylish interaction effects**

  * [Hover Tilt Effect](https://visualportfolio.co/justified-tilt-effect/)
  * [Custom Hover Image](https://visualportfolio.co/custom-hover-image-animated-gif/) - useful for animated GIFs
  * [Caption Move Style](https://visualportfolio.co/masonry-caption-move/)

* **Responsive Breakpoints Settings**
Manually control the screen sizes, which used by the automatic responsive function to adapt your gallery layouts.

* **Instagram-like Image Filters**
Improve visual look of you gallery images by adding filters on your normal or hovered images.

* **AJAX Improvements**
Requests properly cached and links preloaded before you click.

* **Advanced Query Settings**
Filter by Author, Date Range, Ignore Sticky Posts, exclude posts without Featured Image, and much more...

* **Popup Gallery for Posts and Pages**
Display posts and pages in popup iframe, not only image and video galleries. It's like works preview in Dribbble and Behance, but on your own site.

* **Popup Gallery Deep Linking**
Makes URL automatically change when you open popup and you can easily link to a specific popup image.

[**Find much more portfolio and gallery features of Visual Portfolio Pro today!**](https://visualportfolio.co/pro/?utm_source=wporg&utm_medium=link&utm_campaign=pro)

### 🌟 More Features ###

* **Lightboxes for Standard WordPress Images**
Image lightbox available for Visual Portfolio galleries as well as for standard WordPress images and galleries in your content.

* **AJAX Loading and Pagination**
Every dynamic part of the Visual Portfolio plugin is using AJAX to update the gallery content in live mode.
Organized galleries and portfolio lists will make your website look more professional, easy to navigate and result in a better user experience. We prepared 3 types of paginations for you:
  * Infinite Scroll
  * Load More button
  * Paged pagination

* **Filter**
Filter your gallery and portfolio by taxonomies (mostly categories and tags). Let users select a category and see the relevant items.

* **Sort gallery items by date and title**
Users may sort gallery items by date and title.

* **GIFs Support**
Our plugin automatically displays the animated GIFs in photo galleries. Also, you can show the animated GIFs on mouseover with the Pro plugin.

* **Items Gutters**
Manually adjust the spacing between gallery and portfolio items.

* **Images Lazy Loading**
Images lazy loading boost your page loading speed. You don't need to worry about it, just use your beautiful images in the gallery, Visual Portfolio will do all the work for you.

* **Images Aspect Ratio**
All built-in gallery layouts support custom image aspect ratio. You don't need to crop the image manually.

* **Images Focal Point**
Sometimes it is very important to specify the focal point so that the custom aspect ratio does not cut off important parts of the photos. For example, people's faces on the portrait photos.

* **Custom Links for Gallery Images**
By default, gallery images will contain the links to original images. You can manually set the custom links, for example, to a website or Youtube video.

* **RTL Support**
Visual Portfolio natively supports RTL languages, proper styles loaded automatically, without user interaction.

* **Elementor and WPBakery Page Builder support**
There is a helpful widget for Elementor and shortcode for WPBakery Page Builder, which will let you select one of the available Saved Layouts and output it.

* **Responsive and Mobile Ready**
Visual Portfolio and Galleries are completely responsive and mobile ready – layouts automagically transforms to display perfectly on your screen size.

* **Custom CSS**
Deeply customize the look of your gallery using custom CSS and CSS Variables.

* **... And Much More**
All available features you can find on the [plugin's site](https://visualportfolio.co/) and [documentation](https://visualportfolio.co/documentation/getting-started/).

## Screenshots ##

1. Gutenberg Blocks
2. Gutenberg Block Settings
3. Portfolio Items Admin

## Installation ##

### 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](https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation).

## Frequently Asked Questions ##

### Does Visual Portfolio has documentation? ####

Yes, our plugin has documentation to easily get started with galleries. Read it here - [Visual Portfolio Documentation](https://visualportfolio.co/documentation/getting-started/)

### What themes does Visual Portfolio support? ####

Visual Portfolio has been tested with many WordPress themes and supports all major WordPress themes. Since we follow WordPress’ plugin development guidelines, you can rest assured that Visual Portfolio galleries will work perfectly, no matter what theme you use. If you’ve installed Visual Portfolio and are facing issues, it might not be because of a theme incompatibility. Please get in touch with the support team by opening a support ticket in our support forum, and we will fix it for you.

### Do I have to remove other Gallery and Portfolio plugins if I install Visual Portfolio? ####

That is recommended. Visual Portfolio is designed to be an all in one Gallery and Portfolio plugin. If you use other Gallery plugins with Visual Portfolio on your website, not only will the performance of your website be negatively affected, but both plugins working together can produce unexpected conflicts or errors.

### Are the galleries mobile friendly? ####

Yes, Visual Portfolio built with mobile optimization in mind. It will automatically fit your screen size, so you don't need to worry about. Furthermore, we prepared lazy loading, which significantly increases page loading speed. Before making a decision, just check by yourself how [Visual Portfolio works on mobile devices](https://visualportfolio.co/masonry/).

### Can I upload multiple images at once? ####

Yes, you can batch upload entire photo galleries at one time thanks to WordPress media library functionality.

### Is there pagination for photo galleries? ####

Yes, you can use 3 type of pagination when displaying photo galleries or posts. Choose the number of photos to display and select Paged, Load More or Infinite Loading pagination. Examples with all gallery pagination types are [available on the Visual Portfolio website](https://visualportfolio.co/).

### Can I filter images and portfolio items by categories? ####

Yes, our plugin has built in support for AJAX Filter by items categories. See a couple of examples:

* [Category filtering with links](https://visualportfolio.co/grid/)
* [Category filtering + Sort with Select](https://visualportfolio.co/filterable-and-sortable/)

### Can I add an external links to galleries? ####

Yes, you can add external links to your gallery items.

### Is Visual Portfolio developers friendly? ####

Yes, we prepared a lot of filters and actions for developers, so you can easily extend default functionality for your need. [Read here more info for developers](https://visualportfolio.co/documentation/developers/).

### Is Visual Portfolio translation ready? ####

Yes, Visual Portfolio has full translation and localization support via the `visual-portfolio` textdomain. To submit a translation, see <https://translate.wordpress.org/projects/wp-plugins/visual-portfolio/>

### More Information ####

For more information, feel free to visit [Visual Portfolio official website](https://visualportfolio.co/).

## Changelog ##

= 2.10.3 =

* fixed Elementor widget PHP error
* fixed preloader logo styles
* fixed wrong output of filters after AJAX call
* fixed number controls value type bug (for example, when you change Offset option, it will not display the actual value in Saved Layout)

= 2.10.2 =

* fixed conflict of lazy loading and Imagify WebP feature (again)

= 2.10.1 =

* added setting to enable lazy loading for all images on site (not only for Visual Portfolio)
* changed preloader logo svg to img tag
* fixed wrong path for Pro templates
* fixed wrong name of link template
* fixed popup gallery for old deprecated overlay class

= 2.10.0 =

* added new Query setting to select multiple post types
* added new setting - 'Use Deep Linking URL to Share Images'
* added support for TED and Coub Video popups in Pro plugin
* added possibility to remove no-image from Settings
* added more templates for items (split meta parts to separate templates)
* added width and max-width styles to JS Stretch code to prevent possible styles conflicts
* fixed styles loading when using filter and sort shortcodes

= 2.9.1 =

* added full support for WPML plugin
* changed some PHP filter names + added fallbacks to prevent bugs with existing extensions

= 2.9.0 =

* improved plugin documentation <https://visualportfolio.co/documentation/getting-started/>. Added more pages with detailed descriptions
* added Breakpoints settings in Pro plugin to control responsive screen sizes, on which responsive features stack
* added option to completely hide the block if no items found
* updated WPBakery shortcode icon
* allow pointer events while AJAX loading
* automatically enable popup gallery, when select Images source in Setup Wizard
* changed Custom CSS modal size
* changed PhotoSwipe share URLs (share actual image urls)
* fixed linear loading time decrease, when adding more blocks on the page
* fixed custom query with selected taxonomy displaying all available posts, when taxonomy posts doesn't exist
* fixed layout elements modal labels
* fixed Swiper and items styles displaying scrollbars in Safari
* fixed Saved Layout disabled Update button
* fixed preloader icon w3c validator errors
* minor changes

= 2.8.2 =

* added option to change No Items notice
* removed changing opacity of items while AJAX loading
* fixed (finally!) wrong items position when used Default Items Style + Justified Layout
* fixed wrong preview iframe URL on WP Multisite
* fixed Ghost Kit animate on scroll extension compatibility <https://ghostkit.io/extensions/animate-on-scroll/>
* fixed duplicates in popup gallery, when used carousel with loop
* fixed preloader animation styles conflict with some themes
* fixed PHP warning "non-numeric value encountered"

= 2.8.1 =

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

= 2.8.0 =

* added support for Custom Hover image in Pro version <https://visualportfolio.co/custom-hover-image-animated-gif/>
* 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` <https://visualportfolio.co/documentation/developers/wordpress-filters/>
* 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

= 2.7.1 =

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

= 2.7.0 =

* 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

= 2.6.2 =

* 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

= 2.6.1 =

* fixed gallery images displaying when Tiles + 0 gap used

= 2.6.0 =

* 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

= 2.5.0 =

* added Image Overlay setting on Emerge Style
* added support for images filters in Pro plugin version <https://visualportfolio.co/masonry-image-filters/>
* 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

= 2.4.0 =

* 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'

= 2.3.0 =

* added Pro version support <https://visualportfolio.co/pro/>
* 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

= 2.2.0 =

* 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

= 2.1.0 =

* 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

= 2.0.1 =

* 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

= 2.0.0 =

! 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:

* If you extended portfolio options using PHP, you will need to remove `vp_` prefix from your custom options. Example - <https://github.com/nk-o/visual-portfolio/blob/master/src/classes/class-admin.php#L854-L865>
* If you overwrite templates and styles, you will need to change your styles to work with CSS variables (at least variables for overlay colors) - <https://visualportfolio.co/documentation/developers/css-variables/>
* If you overwrite templates with meta, you may see no icons displayed. Icons output changed and now it works like this - <https://github.com/nk-o/visual-portfolio/blob/master/src/templates/items-list/items-style/fade/meta.php#L55-L68>

Log:

* 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 <https://github.com/nk-o/visual-portfolio/tree/master/src/templates/icons>
* renamed `Portfolio Layouts` to `Saved`
* renamed `Default` Items Styles, Filter, Sort and Pagination to `Classic`
* a lot of minor changes

= 1.16.2 =

* 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

= 1.16.1 =

* 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

= 1.16.0 =

* 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

= 1.15.1 =

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

= 1.15.0 =

* 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

= 1.14.1 =

* added jQuery events for PhotoSwipe and Fancybox <https://visualportfolio.co/documentation/developers/jquery-events/>
* fixed carousel responsive bug since new Swiper v5

= 1.14.0 =

* 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)

= 1.13.2 =

* fixed incorrect post date if something filters it (for example Events Manager plugin). Thanks to <https://wordpress.org/support/topic/date-problem-with-events-and-1-13-1-version/>

= 1.13.1 =

* 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

= 1.13.0 =

* 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

= 1.12.2 =

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

= 1.12.1 =

* 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

= 1.12.0 =

* 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 &lt;a&gt; tag in fly and fade effect when all meta disabled

= 1.11.1 =

* 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)

= 1.11.0 =

* 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

= 1.10.0 =

* 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 to display in your galleries
* 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)

= 1.9.3 =

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

= 1.9.2 =

* 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)

= 1.9.1 =

* 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)

= 1.9.0 =

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'

= 1.8.2 =

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

= 1.8.1 =

* fixed Click Action Target default value

= 1.8.0 =

* 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_registered_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

= 1.7.2 =

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

= 1.7.1 =

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

= 1.7.0 =

* 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

= 1.6.5 =

* added options for texts in filter and pagination
* fixed paged /portfolio/ page (<https://wordpress.org/support/topic/paging-infinite-loading-not-working/>)
* fixed vertical images quality
* fixed conflict with Jetpack lazy
* fixed filter shortcode output

= 1.6.4 =

* fixed font-awesome dependency

= 1.6.3 =

* added portfolio gallery 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 [https://wordpress.org/support/topic/change-the-permalink-structure-2/](https://wordpress.org/support/topic/change-the-permalink-structure-2/))

= 1.6.2 =

* additional check for isotope and Flickr Justified Gallery existence
* added init outside of 'ready' event (possible faster initialization)
* fixed lazyload possible conflict with the 3rd-party themes/plugins

= 1.6.1 =

* fixed validator error "The sizes attribute may be specified only if the srcset attribute is also present"

= 1.6.0 =

* NOTE: strongly recommend to regenerate thumbnails on your site using [this plugin](https://wordpress.org/plugins/regenerate-thumbnails/)
* added lazy loading for gallery 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 gallery 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

= 1.5.0 =

* added Slider (+ Carousel, Coverflow) layout gallery
* added capabilities check when generated preview page
* improved responsive calculation algorithm
* disabled preview page caching by some popular caching plugins
* fixed isotope newly loaded gallery 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

= 1.4.3 =

* added check for template existence 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

= 1.4.2 =

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

= 1.4.1 =

* 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

= 1.4.0 =

* added Justified gallery 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 gallery 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

= 1.3.0 =

* 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 gallery 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

= 1.2.1 =

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

= 1.2.0 =

* 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 published 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

= 1.1.4 =

* fixed conflict with WooCommerce Photoswipe gallery

= 1.1.3 =

* 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%;

= 1.1.2 =

* 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

= 1.1.1 =

* fixed php enqueue errors

= 1.1.0 =

* 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

= 1.0.1 =

* 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

= 1.0.0 =

* initial Release
