Translation Plugins
WPML
Comprehensive multilingual support with automatic translation management.Features
- Custom Field Translation: Automatic registration of portfolio settings for WPML
- Archive Page Translation: Support for translated portfolio archive pages
- Taxonomy Translation: Converts custom taxonomies to current language
- Translation Management: Integrates with WPML’s translation management system
How It Works
Location:classes/3rd/plugins/class-wpml.php
Custom Field Registration
Location: classes/3rd/plugins/class-wpml.php:91
All Visual Portfolio controls are automatically registered for translation:
classes/3rd/plugins/class-wpml.php:61
Translated archive pages are automatically detected and configured:
classes/3rd/plugins/class-wpml.php:137
Custom taxonomies are converted to the current language in queries:
Setup
- Install and activate WPML
- Install Visual Portfolio
- Go to WPML > Settings > Custom Field Translation
- Visual Portfolio fields are automatically registered
- Create portfolios and translate them via WPML > Translation Management
What Gets Translated
- Portfolio titles and descriptions
- Gallery captions
- Filter labels
- Custom text strings
- Archive page content
- Taxonomy terms
Object ID Helper
Get translated object IDs programmatically:classes/3rd/plugins/class-wpml.php:76
SEO Plugins
Yoast SEO
Automatic SEO optimization for portfolio archive pages.Features
- Canonical URL Fixes: Correct canonical URLs for portfolio archives
- OpenGraph Support: Proper social media meta tags
- Schema.org Integration: Structured data for portfolio pages
- Breadcrumb Support: Correct breadcrumb URLs
Implementation
Location:classes/3rd/plugins/class-yoast.php
Canonical URLs
Location: classes/3rd/plugins/class-yoast.php:21-22
classes/3rd/plugins/class-yoast.php:34
classes/3rd/plugins/class-yoast.php:69
What’s Optimized
- Canonical URLs for archive pages
- OpenGraph URLs for social sharing
- Schema.org structured data
- Breadcrumb navigation URLs
- Page titles for archives
- Meta descriptions
No Configuration Needed
The integration activates automatically when Yoast SEO is installed. All portfolio pages will have proper SEO meta tags.Rank Math
Advanced SEO features for portfolio archive pages.Features
- Canonical URL Management: Correct canonical URLs
- Title Optimization: Proper titles for archive pages
- OpenGraph Integration: Social media meta tags
- Query Manipulation: Treats portfolio pages as archives for proper SEO
Implementation
Location:classes/3rd/plugins/class-rank-math.php
Canonical and Title Filters
Location: classes/3rd/plugins/class-rank-math.php:21-23
classes/3rd/plugins/class-rank-math.php:49
Temporarily sets the query as an archive for proper SEO metadata:
classes/3rd/plugins/class-rank-math.php:73
After Rank Math processes the page, the query is restored:
Hook Timing
The integration uses specific hook priorities to work correctly:classes/3rd/plugins/class-rank-math.php:24-25
All In One SEO (AIOSEO)
Basic compatibility with All In One SEO Pack. Location:classes/3rd/plugins/class-all-in-one-seo.php
Provides foundational support for AIOSEO’s meta tags and sitemap generation.
Performance & Caching Plugins
WP Rocket
Optimized JavaScript delivery and caching compatibility.Features
- Lazy Load Script Exclusion: Prevents conflicts with delayed JavaScript
- Cache Compatibility: Works with WP Rocket’s caching system
- Automatic Detection: No configuration needed
Implementation
Location:classes/3rd/plugins/class-wp-rocket.php:33
Excludes Visual Portfolio’s lazy loading scripts from WP Rocket’s JavaScript delay:
Why This Matters
WP Rocket automatically excludes the mainlazysizes library but not Visual Portfolio’s additional lazy loading assets. This integration ensures all lazy loading scripts work correctly with WP Rocket’s delay feature.
Setup
- Install WP Rocket
- Enable “Delay JavaScript Execution” if desired
- Visual Portfolio scripts are automatically excluded
- Clear WP Rocket cache after activation
SG Optimizer (SiteGround)
Compatibility with SiteGround’s optimization plugin. Location:classes/3rd/plugins/class-sg-cachepress.php
Provides caching and optimization compatibility for SiteGround hosting.
Image Optimization Plugins
Jetpack
Lazy loading compatibility with Jetpack’s image optimization.Features
- Lazy Load Skip: Prevents double lazy loading
- Manual Initialization: Reinitializes Jetpack lazy load after AJAX
- Attribute Detection: Skips images already using lazy loading
Implementation
Location:classes/3rd/plugins/class-jetpack.php
Skip Visual Portfolio Images
Location: classes/3rd/plugins/class-jetpack.php:50
data-src (Visual Portfolio’s lazy load) are skipped by Jetpack.
Reinitialize After AJAX
Location: classes/3rd/plugins/class-jetpack.php:29
EWWW Image Optimizer
Automatic compatibility with EWWW’s optimization and lazy loading. Location:classes/3rd/plugins/class-ewww-image-optimizer.php
Supports EWWW’s image compression and lazy loading features.
Imagify
Image optimization and WebP compatibility. Location:classes/3rd/plugins/class-imagify.php
Works seamlessly with Imagify’s optimization and WebP generation.
A3 Lazy Load
Compatibility with A3 Lazy Load plugin. Location:classes/3rd/plugins/class-a3-lazy-load.php
Prevents conflicts with A3’s lazy loading system.
Lazy Loading for Responsive Images
Support for the Lazy Loading for Responsive Images plugin. Location:classes/3rd/plugins/class-lazy-loading-responsive-images.php
Ensures compatibility with this popular lazy loading solution.
Lightbox Plugins
Fancybox
Security fix and compatibility for Fancybox lightbox.Features
- XSS Prevention: Escapes captions to prevent XSS vulnerabilities
- Automatic Detection: Works with any theme/plugin using Fancybox
- No Configuration: Automatically applies security fixes
Implementation
Location:classes/3rd/plugins/class-fancybox.php:35
Adds XSS protection for Fancybox captions (CVE-2024-5020):
Security Note
This integration addresses a reported XSS vulnerability (CVE-2024-5020) by escaping HTML in Fancybox captions before display.Membership & Restriction Plugins
Paid Memberships Pro
Compatibility with membership restriction features. Location:classes/3rd/plugins/class-paid-memberships-pro.php
Supports content restriction for portfolio items based on membership levels.
Editor Plugins
TinyMCE
Classic editor integration for Visual Portfolio. Location:classes/3rd/plugins/class-tinymce.php
Adds Visual Portfolio button to the classic WordPress editor.
General Plugin Compatibility
Automatic Activation
All plugin integrations activate automatically when:- The plugin is installed and active
- Visual Portfolio detects plugin-specific functions or constants
- No manual configuration is required
Lazy Loading Priority
When multiple lazy loading plugins are active: Priority Order:- Theme lazy loading (if integrated)
- Optimization plugin lazy loading (Jetpack, EWWW, etc.)
- Visual Portfolio lazy loading
- WordPress core lazy loading
Caching Best Practices
For optimal performance with caching plugins:- Clear all caches after installing Visual Portfolio
- Exclude Visual Portfolio admin pages from caching
- Enable automatic cache clearing on portfolio updates
- Test portfolios in incognito mode after cache clear
JavaScript Optimization
When using JavaScript optimization plugins:- Defer/Delay JS: Visual Portfolio scripts are automatically excluded where needed
- Combine JS: Usually safe, but test portfolio functionality
- Minify JS: Compatible with all optimization plugins
- Async Loading: May require excluding Visual Portfolio scripts
Troubleshooting
Lazy Loading Conflicts
Symptom: Images not loading or double lazy loading Solution:- Disable Visual Portfolio lazy loading: Settings > Images > Lazy Loading > Off
- Clear all caches
- Test with only one lazy loading system active
SEO Issues
Symptom: Wrong canonical URLs or missing meta tags Solution:- Ensure SEO plugin is up to date
- Check portfolio archive page mapping
- Clear SEO plugin cache
- Regenerate sitemap
Caching Problems
Symptom: Portfolio not updating or showing old content Solution:- Clear WordPress cache
- Clear plugin cache (WP Rocket, etc.)
- Clear browser cache
- Clear CDN cache if applicable
- Check cache exclusion rules
Translation Issues
Symptom: Portfolio not translating correctly with WPML Solution:- Check custom field translation settings
- Ensure portfolio fields are set to “Translate” in WPML
- Clear WPML cache
- Resave portfolio in default language
- Update translations
JavaScript Errors
Symptom: Console errors related to Visual Portfolio Solution:- Disable JavaScript optimization temporarily
- Check for script conflicts in browser console
- Exclude Visual Portfolio scripts from optimization
- Test with default theme to isolate issue
Developer Hooks
Customize plugin integrations using these hooks:Custom Plugin Integration
To create your own plugin integration:Reference Implementations
Study these files for integration examples: SEO Plugins:- Yoast:
classes/3rd/plugins/class-yoast.php - Rank Math:
classes/3rd/plugins/class-rank-math.php
- WPML:
classes/3rd/plugins/class-wpml.php
- WP Rocket:
classes/3rd/plugins/class-wp-rocket.php - Jetpack:
classes/3rd/plugins/class-jetpack.php
- Fancybox:
classes/3rd/plugins/class-fancybox.php