{"id":345585,"date":"2026-07-25T19:16:48","date_gmt":"2026-07-25T19:16:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/qaiyo-clean-gallery\/"},"modified":"2026-07-25T19:16:20","modified_gmt":"2026-07-25T19:16:20","slug":"qaiyo-clean-gallery","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/qaiyo-clean-gallery\/","author":23510315,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Qaiyo Clean Gallery","header_author":"Qaiyo","header_description":"Letisztult, gyors gal\u00e9ria plugin (Grid, Masonry, Lightbox, sz\u0171r\u0151, lazy loading) \u2013 nulla f\u00fcgg\u0151s\u00e9ggel. Saj\u00e1t CPT, blokk \u00e9s shortcode. HappyFiles plugin kompatibilit\u00e1s.","assets_banners_color":"","last_updated":"2026-07-25 19:16:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/qaiyo-plugins.com\/qaiyo-clean-gallery","header_author_uri":"https:\/\/qaiyo-plugins.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"qaiyo","date":"2026-07-25 19:16:20"}},"upgrade_notice":{"1.0.0":"<p>First public release: one-click ZIP export\/import to move galleries between sites, five layouts, lightbox with deep linking and social share, HappyFiles live-link, an Overview dashboard and 11 languages.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"qaiyo-clean-gallery\/gallery":{"name":"qaiyo-clean-gallery\/gallery","title":"Qaiyo Clean Gallery"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"A gallery in the Bento layout on the frontend.","2":"The built-in lightbox with deep linking and social share buttons.","3":"The gallery editor with the drag-and-drop image manager and HappyFiles live-link.","4":"The Export \/ Import screen for moving a gallery between sites.","5":"The Overview dashboard with at-a-glance stats and quick actions.","6":"The all-galleries view with category filter, sorting and the column switcher."}},"plugin_section":[],"plugin_tags":[210,271260,163,237,6822],"plugin_category":[50],"plugin_contributors":[267332],"plugin_business_model":[],"class_list":["post-345585","plugin","type-plugin","status-publish","hentry","plugin_tags-gallery","plugin_tags-happyfiles","plugin_tags-images","plugin_tags-lightbox","plugin_tags-masonry","plugin_category-media","plugin_contributors-qaiyo","plugin_committers-qaiyo"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/qaiyo-clean-gallery.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Qaiyo Clean Gallery is a focused, dependency-free WordPress gallery plugin built for performance and clean markup. Each gallery is a Custom Post Type with its own settings, usable through a Gutenberg block or a shortcode. The frontend ships <strong>zero JavaScript dependencies<\/strong> \u2014 no jQuery, no Swiper, no PhotoSwipe \u2014 just a few kilobytes of plain modern JavaScript.<\/p>\n\n<p>Unlike most gallery plugins, Qaiyo Clean Gallery is genuinely portable and self-hostable: you can move a whole gallery \u2014 with its images \u2014 from one site to another in a single ZIP file, it syncs live with your HappyFiles media folders, and it never phones home or loads your images through a third-party CDN.<\/p>\n\n<h4>What makes it different<\/h4>\n\n<ul>\n<li><strong>One-click ZIP export \/ import<\/strong> \u2014 move an entire gallery (settings, categories and the original image files) to another site in one downloadable ZIP. The source site does not have to stay online during import, and images transfer byte-for-byte. No database exports, no phpMyAdmin, no extra migration plugin.<\/li>\n<li><strong>HappyFiles live-link<\/strong> \u2014 point a gallery at a HappyFiles media folder and it stays in sync automatically. Drop new images into the folder and they appear in the gallery \u2014 no re-import step.<\/li>\n<li><strong>No lock-in, no tracking<\/strong> \u2014 your images stay on your server and nothing is sent anywhere automatically. The only external interactions are the optional, click-only social share links and an optional WordPress.org directory query on an admin screen (see \"External services\" below).<\/li>\n<li><strong>Truly multilingual<\/strong> \u2014 ships with 11 languages, each with correct plural rules.<\/li>\n<\/ul>\n\n<h4>Gallery layouts<\/h4>\n\n<ul>\n<li><strong>Grid<\/strong> \u2014 classic fixed-ratio column grid<\/li>\n<li><strong>Masonry<\/strong> \u2014 Pinterest-style variable-height columns<\/li>\n<li><strong>Standard<\/strong> \u2014 uniform 1:1 squares for portfolios and shops<\/li>\n<li><strong>Justified<\/strong> \u2014 equal-height rows with varying widths (Flickr style)<\/li>\n<li><strong>Bento<\/strong> \u2014 asymmetric multi-sized grid with hero cells<\/li>\n<\/ul>\n\n<h4>Lightbox<\/h4>\n\n<ul>\n<li>Keyboard navigation (arrow keys \/ Esc) and touch-swipe friendly<\/li>\n<li>Image counter, captions and a responsive mobile layout<\/li>\n<li><strong>Deep linking<\/strong> \u2014 opening an image updates the URL (<code>#qcg={id}&amp;img={index}<\/code>) so an exact image can be linked, bookmarked and shared<\/li>\n<li><strong>Social share buttons<\/strong> inside the lightbox \u2014 Facebook, X, Pinterest and copy-link<\/li>\n<li><strong>Right-click protection<\/strong> \u2014 optional casual-download protection (disables right-click and image drag)<\/li>\n<\/ul>\n\n<h4>All-galleries view<\/h4>\n\n<p>The <code>[qaiyo_clean_gallery_all]<\/code> view lists every gallery as a paged card grid with:<\/p>\n\n<ul>\n<li>Category filter buttons<\/li>\n<li>Sorting by date (newest \/ oldest) or title (A\u2192Z \/ Z\u2192A)<\/li>\n<li>Load-more pagination<\/li>\n<li>A 3 \/ 4 column switcher whose icon colors you can customize<\/li>\n<\/ul>\n\n<h4>Overview dashboard<\/h4>\n\n<p>A dedicated landing page under <strong>Clean Gallery \u2192 Overview<\/strong> shows at-a-glance stats \u2014 number of galleries, published, drafts, total images, categories and HappyFiles status \u2014 plus quick actions for creating a gallery, exporting\/importing and opening help.<\/p>\n\n<h4>Performance &amp; SEO<\/h4>\n\n<ul>\n<li>Zero JavaScript dependencies on the frontend<\/li>\n<li>Native browser lazy loading (<code>loading=\"lazy\"<\/code>)<\/li>\n<li>Automatic image compression on upload \u2014 images over ~1.5 MB are compressed to under ~1 MB using Imagick or GD<\/li>\n<li>schema.org structured data: <code>ImageGallery<\/code>, <code>ImageObject<\/code> and <code>ItemList<\/code><\/li>\n<li>ARIA labels and full keyboard navigation<\/li>\n<\/ul>\n\n<h4>Editor &amp; embedding<\/h4>\n\n<ul>\n<li>Each gallery is a Custom Post Type with a drag-and-drop image manager<\/li>\n<li>A copy-ready shortcode box on the editor screen<\/li>\n<li>A native <strong>Qaiyo Clean Gallery<\/strong> Gutenberg block (server-side rendered)<\/li>\n<li>Theme-overridable single-gallery template<\/li>\n<\/ul>\n\n<p>Shortcodes:<\/p>\n\n<ul>\n<li><code>[qaiyo_clean_gallery id=\"42\"]<\/code> \u2014 a single gallery. Optional attributes: <code>layout<\/code>, <code>columns<\/code>, <code>lightbox<\/code>, <code>captions<\/code>, <code>lazy<\/code>, <code>gap<\/code>, and <code>ids=\"101,102\"<\/code> to render attachments directly without a gallery post.<\/li>\n<li><code>[qaiyo_clean_gallery_all]<\/code> \u2014 all galleries as a paged card grid. Attributes: <code>card_columns<\/code>, <code>gallery_columns<\/code>, <code>filter<\/code>, <code>orderby<\/code>, <code>order<\/code>, <code>per_page<\/code>.<\/li>\n<\/ul>\n\n<h4>Internationalization<\/h4>\n\n<p>Bundled translations: English, Hungarian, German, French, Spanish, Italian, Portuguese, Russian, Japanese, Turkish and Polish. Locale variants (for example de_CH, fr_BE, es_MX, pt_BR) automatically fall back to their base language.<\/p>\n\n<h4>For developers<\/h4>\n\n<p>Everything is namespaced under the <code>qaiyo_clean_gallery<\/code> prefix, with filters for customization:<\/p>\n\n<ul>\n<li><code>qaiyo_clean_gallery_justified_row_height<\/code> \u2014 target row height for the Justified layout<\/li>\n<li><code>qaiyo_clean_gallery_happyfiles_taxonomy<\/code>, <code>qaiyo_clean_gallery_hf_orderby<\/code>, <code>qaiyo_clean_gallery_hf_order<\/code> \u2014 HappyFiles folder source and ordering<\/li>\n<li><code>qaiyo_clean_gallery_compress_threshold<\/code>, <code>qaiyo_clean_gallery_compress_max_bytes<\/code>, <code>qaiyo_clean_gallery_compress_quality_step<\/code>, <code>qaiyo_clean_gallery_compress_quality_floor<\/code> \u2014 image compression tuning<\/li>\n<li><code>qaiyo_clean_gallery_cpt_slug<\/code>, <code>qaiyo_clean_gallery_tax_slug<\/code> \u2014 the single-gallery and category URL slugs<\/li>\n<\/ul>\n\n<h4>Part of the Qaiyo family<\/h4>\n\n<p>Qaiyo Clean Gallery is part of the Qaiyo plugin family \u2014 https:\/\/qaiyo-plugins.com \u2014 support: info@qaiyo-plugins.com<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not send any data anywhere on its own and does not use any tracking. It interacts with the following external services, in the ways described below.<\/p>\n\n<h4>Facebook, X and Pinterest share links (optional)<\/h4>\n\n<p>When the <strong>Social share buttons<\/strong> setting is enabled (Clean Gallery \u2192 Info &amp; Help), the lightbox shows share links for Facebook, X and Pinterest. No connection to these services is made while browsing \u2014 a request happens <strong>only when a visitor clicks one of the share links<\/strong>, which opens that provider's standard share page in a new browser tab.<\/p>\n\n<p>What is sent on click, as URL parameters of the opened share page: the URL of the page containing the gallery (all three services), and for Pinterest additionally the URL of the shared image and its caption\/title, so the provider can pre-fill the share dialog. The plugin itself transmits nothing; the visitor's browser opens the provider's page, where the provider's own terms apply:<\/p>\n\n<ul>\n<li>Facebook (Meta Platforms, Inc.) \u2014 <a href=\"https:\/\/www.facebook.com\/legal\/terms\">Terms of Service<\/a>, <a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">Privacy Policy<\/a><\/li>\n<li>X (X Corp.) \u2014 <a href=\"https:\/\/x.com\/en\/tos\">Terms of Service<\/a>, <a href=\"https:\/\/x.com\/en\/privacy\">Privacy Policy<\/a><\/li>\n<li>Pinterest (Pinterest, Inc.) \u2014 <a href=\"https:\/\/policy.pinterest.com\/en\/terms-of-service\">Terms of Service<\/a>, <a href=\"https:\/\/policy.pinterest.com\/en\/privacy-policy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<p>The copy-link button only copies the URL to the visitor's clipboard locally; it contacts no service. If the Social share buttons setting is disabled, none of these links are rendered.<\/p>\n\n<h4>WordPress.org plugin directory (admin only)<\/h4>\n\n<p>The admin-only <strong>Discover Qaiyo<\/strong> screen queries the official WordPress.org plugin directory API (<code>api.wordpress.org<\/code>) to list our other free plugins. The request is made only when an administrator opens that screen, contains only the plugin-author query (no personal data), and its result is cached for 12 hours. This is the same WordPress.org infrastructure the built-in \"Add Plugins\" screen uses. See the <a href=\"https:\/\/wordpress.org\/about\/privacy\/\">WordPress.org privacy policy<\/a>. No request is made on the frontend of your site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong> and upload the <code>qaiyo-clean-gallery<\/code> ZIP (or copy the <code>qaiyo-clean-gallery<\/code> folder to <code>\/wp-content\/plugins\/<\/code>).<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Create your first gallery under <strong>Clean Gallery \u2192 Add New<\/strong>: add a title, pick images from the Media Library, choose a layout, and publish.<\/li>\n<li>Copy the shortcode from the editor's <strong>Shortcode<\/strong> box, or add the <strong>Qaiyo Clean Gallery<\/strong> block, and embed it in any post or page.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or newer<\/li>\n<li>PHP 7.4 or newer<\/li>\n<li>Imagick (preferred) or GD for automatic image compression<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20add%20any%20javascript%20libraries%20to%20my%20site%3F\"><h3>Does it add any JavaScript libraries to my site?<\/h3><\/dt>\n<dd><p>No. The frontend has zero JavaScript dependencies \u2014 no jQuery, no Swiper, no PhotoSwipe. Just a small amount of plain JavaScript.<\/p><\/dd>\n<dt id=\"how%20do%20i%20move%20a%20gallery%20to%20another%20website%3F\"><h3>How do I move a gallery to another website?<\/h3><\/dt>\n<dd><p>Go to <strong>Clean Gallery \u2192 Export \/ Import<\/strong>, pick a gallery and download the ZIP. On the other site, open the same screen, upload the ZIP, and the gallery is recreated as a draft with all of its images. The source site does not need to stay online during the import.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20happyfiles%3F\"><h3>Does it work with HappyFiles?<\/h3><\/dt>\n<dd><p>Yes. If HappyFiles (free or Pro) is active, you can point a gallery at a HappyFiles folder and it stays in sync automatically \u2014 new images added to the folder appear in the gallery with no re-import. If HappyFiles is not installed, galleries work as normal manual galleries.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20a%20happyfiles-linked%20gallery%20when%20i%20import%20it%20somewhere%20without%20happyfiles%3F\"><h3>What happens to a HappyFiles-linked gallery when I import it somewhere without HappyFiles?<\/h3><\/dt>\n<dd><p>It imports as a normal manual gallery containing the same images \u2014 no data is lost. If HappyFiles is active on the target site, the folder structure is recreated and the gallery stays live-linked.<\/p><\/dd>\n<dt id=\"which%20languages%20are%20included%3F\"><h3>Which languages are included?<\/h3><\/dt>\n<dd><p>English, Hungarian, German, French, Spanish, Italian, Portuguese, Russian, Japanese, Turkish and Polish.<\/p><\/dd>\n<dt id=\"can%20i%20override%20the%20single%20gallery%20template%3F\"><h3>Can I override the single gallery template?<\/h3><\/dt>\n<dd><p>Yes. Copy <code>templates\/single-qaiyo_clean_gallery.php<\/code> from the plugin into your theme's root folder and edit it there.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20to%20external%20servers%3F\"><h3>Does the plugin send any data to external servers?<\/h3><\/dt>\n<dd><p>No data is sent automatically. Your images and galleries stay on your own server, and the plugin sends nothing to qaiyo-plugins.com. The only network interactions are the optional social share links in the lightbox (opened only when a visitor clicks them) and an optional query to the WordPress.org plugin directory on the admin-only \"Discover Qaiyo\" screen \u2014 both documented in detail under \"External services\" below.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>First public release. Highlights:<\/p>\n\n<ul>\n<li>Five gallery layouts: Grid, Masonry, Standard (uniform squares), Justified (equal-height rows) and Bento (asymmetric grid).<\/li>\n<li>Built-in accessible lightbox: keyboard and touch-swipe navigation, image counter and captions, plus deep linking (an exact image can be linked\/bookmarked), social share buttons (Facebook, X, Pinterest, copy link) and optional right-click protection.<\/li>\n<li>One-click ZIP Export \/ Import: move an entire gallery \u2014 settings, categories and the original image files \u2014 to another site in a single self-contained ZIP. The source site does not need to stay online, images transfer byte-for-byte, duplicates are detected by content hash, and imports arrive as drafts.<\/li>\n<li>HappyFiles live-link: point a gallery at a HappyFiles folder and it stays in sync automatically; on export\/import the folder is recreated and the link preserved.<\/li>\n<li>All-galleries view (<code>[qaiyo_clean_gallery_all]<\/code>): category filter, sort by date\/title, load-more pagination and a 3\/4 column switcher with customizable icon colors.<\/li>\n<li>Overview dashboard: a default landing page with a personalized greeting, at-a-glance stats (galleries, published, drafts, total images, categories, HappyFiles status) and quick actions.<\/li>\n<li>Performance &amp; SEO: zero JavaScript dependencies on the frontend, native lazy loading, automatic image compression on upload (Imagick\/GD), and schema.org ImageGallery \/ ImageObject \/ ItemList structured data.<\/li>\n<li>Editor &amp; embedding: Custom Post Type with a drag-and-drop image manager, a copy-ready shortcode box, a native Gutenberg block and a theme-overridable single-gallery template.<\/li>\n<li>Developer filters: qaiyo_clean_gallery_justified_row_height, qaiyo_clean_gallery_happyfiles_taxonomy, qaiyo_clean_gallery_hf_orderby, qaiyo_clean_gallery_hf_order, qaiyo_clean_gallery_compress_* and qaiyo_clean_gallery_cpt_slug \/ qaiyo_clean_gallery_tax_slug.<\/li>\n<li>Ships with 11 languages: English, Hungarian, German, French, Spanish, Italian, Portuguese, Russian, Japanese, Turkish and Polish.<\/li>\n<\/ul>","raw_excerpt":"Fast, dependency-free gallery: 5 layouts, lightbox, HappyFiles live-link and one-click ZIP export\/import to move galleries between sites.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345585"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/qaiyo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345585"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345585"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345585"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345585"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345585"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}