[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fLHxZ7ZRm-W9AlP3UUFeSPKLEGPV3MI0YBDOmwf5P13E":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":24,"download_link":25,"security_score":26,"vuln_count":27,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":48,"crawl_stats":37,"alternatives":56,"analysis":172,"fingerprints":326},"gallery-custom-links","Gallery Custom Links","2.2.9","Jordy Meow","https:\u002F\u002Fprofiles.wordpress.org\u002Ftigroumeow\u002F","\u003Cp>Gallery Custom Links allows you to link images from galleries to a specified URL. Tested with WordPress Gallery, Gutenberg, the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmeow-gallery\u002F\" rel=\"ugc\">Meow Gallery\u003C\u002Fa> and others. The official page is here: \u003Ca href=\"https:\u002F\u002Fmeowapps.com\u002Fgallery-custom-links\u002F\" rel=\"nofollow ugc\">Gallery Custom Links\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>Two fields are added to your images, in your Media Library: Link URL and Link Target (but also, Link Rel and Arial Label). If, at least, the Link URL is set up, this image will link to that URL every time it is used within a gallery. Lightbox will be automatically disabled for those images.\u003C\u002Fp>\n\u003Cp>To do this, the Gallery Custom Links needs to analyze\u002Frewrite your content. Depending on your WordPress, you can pick the most appropriate method (known as engine).\u003C\u002Fp>\n\u003Cul>\n\u003Cli>HtmlDomParser: Very reliable. It will rewrite your HTML so that the links are hardcoded.\u003C\u002Fli>\n\u003Cli>DiDom: Same as HtmlDomParser but faster. However, your HTML needs to be perfectly valid.\u003C\u002Fli>\n\u003Cli>Javascript: This is the fastest, but the links won’t be hardcoded. Only the visitor will experience the links.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Compatibility\u003C\u002Fh3>\n\u003Cp>It currently works with the native WP Gallery, the Gutenberg Gallery, and the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmeow-gallery\u002F\" rel=\"ugc\">Meow Gallery\u003C\u002Fa>. It should actually work with any gallery plugin using the ‘gallery’ class and Responsive Images (src-set). Let me know if you would like more galleries to be supported, it should be easy.\u003C\u002Fp>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Cp>You can optimize (run the plugin only on the pages where you need it) and support more galleries (through CSS classes) easily by using filters. To know more about this, visit the official page, here: \u003Ca href=\"https:\u002F\u002Fmeowapps.com\u002Fgallery-custom-links\u002F\" rel=\"nofollow ugc\">Gallery Custom Links\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Thanks\u003C\u002Fh3>\n\u003Cp>The motivation to build this plugin came from my users who had issues trying to use WP Gallery Custom Links. I realized that this plugin was working extremely well with the standard gallery, but would require too much rewriting for Gutenberg and other galleries, hence the creation of this plugin. I hope it will help.\u003C\u002Fp>\n\u003Cp>Languages: English.\u003C\u002Fp>\n","Gallery Custom Links allows you to link images to a specified URL. Tested with WordPress Gallery, Gutenberg, the Meow Gallery and others.",30000,945564,94,204,"2026-02-25T14:26:00.000Z","6.9.4","6.0","7.4",[20,21,22,23],"custom","gallery","gutenberg","links","https:\u002F\u002Fmeowapps.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgallery-custom-links.2.2.9.zip",99,1,0,"2025-09-26 00:00:00","2026-03-15T15:16:48.613Z",[32],{"id":33,"url_slug":34,"title":35,"description":36,"plugin_slug":4,"theme_slug":37,"affected_versions":38,"patched_in_version":39,"severity":40,"cvss_score":41,"cvss_vector":42,"vuln_type":43,"published_date":29,"updated_date":44,"references":45,"days_to_patch":47},"CVE-2025-60104","gallery-custom-links-authenticated-author-stored-cross-site-scripting","Gallery Custom Links \u003C= 2.2.5 - Authenticated (Author+) Stored Cross-Site Scripting","The Gallery Custom Links plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 2.2.5 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with author-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.",null,"\u003C=2.2.5","2.2.6","medium",6.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2025-11-05 15:37:15",[46],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fad862fff-4195-4aac-8fe4-8e7b9b49294a?source=api-prod",41,{"slug":49,"display_name":7,"profile_url":8,"plugin_count":50,"total_installs":51,"avg_security_score":52,"avg_patch_time_days":53,"trust_score":54,"computed_at":55},"tigroumeow",27,371190,92,364,73,"2026-04-04T15:34:37.040Z",[57,81,98,124,149],{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":67,"num_ratings":68,"last_updated":69,"tested_up_to":16,"requires_at_least":70,"requires_php":71,"tags":72,"homepage":78,"download_link":79,"security_score":26,"vuln_count":27,"unpatched_count":28,"last_vuln_date":80,"fetched_at":30},"exmage-wp-image-links","EXMAGE – WordPress Image Links","1.1.1","VillaTheme","https:\u002F\u002Fprofiles.wordpress.org\u002Fvillatheme\u002F","\u003Cp>EXMAGE – WordPress Image Links helps you save storage by using external image URLs. These images are shown in Media library like normal images so that you can choose them for post\u002Fproduct featured image, WooCommerce product gallery… or everywhere that images are chosen from Media library.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fnew2new.com\u002F?item=exmage\" title=\"Demo EXMAGE - WordPress Image Links\" rel=\"nofollow ugc\">Try the Demo\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fdocs.villatheme.com\u002F?item=exmage\" title=\"Documents\" rel=\"nofollow ugc\">Documents\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002F1.envato.market\u002FN9DKr7\" title=\"Premium Version\" rel=\"nofollow ugc\">Pro Version\u003C\u002Fa> | | \u003Ca href=\"https:\u002F\u002Fwww.facebook.com\u002Fgroups\u002Fvillatheme\" title=\"VillaTheme\" rel=\"nofollow ugc\">Facebook group\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Preview EXMAGE – WordPress Image Links\u003C\u002Fh3>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FR_hNwUIGqIQ?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Ch3>How to install and use the plugin\u003C\u002Fh3>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FKSQoZjM7yBI?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Ch3>Important Notice:\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\n\u003Cp>This plugin only supports real image URLs that have correct image mime type. It does not support image URLs from an image hosting service(such as Flickr, Imgur, Photobucket …) or a file storage service(such as Google drive)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>External images added by this plugin will no longer work if the plugin is not active\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>FEATURES\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\n\u003Cp>Ability to add single image URL on Upload files tab of the Media library\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Ability to add multiple image URLs at once on below the File upload on Upload New Media page\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>External images have an icon to distinguish them from normal attachments.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>External images also have attachment ID like normal attachments so that you can use them wherever that allows to insert images from Media library such as Post\u002FProduct featured image, product gallery images, variation image, product category image…\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Compatible with ALD plugin: when this plugin is active, there will be an option named “Use external links for images” in the ALD plugin settings\u002FProducts. By enabling this option, AliExpress products imported by ALD plugin will use original AliExpress image URLs for product featured images, gallery images and variation images instead of saving images to your server.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>=Integration=\u003C\u002Fp>\n\u003Cpre>\u003Ccode>if(class_exists( 'EXMAGE_WP_IMAGE_LINKS' )){\n    $add_image = EXMAGE_WP_IMAGE_LINKS::add_image( $url, $image_id, $post_parent );\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>-$url: URL of the image you want to process\u003Cbr \u002F>\n-$image_id: Passed by reference\u003Cbr \u002F>\n-$post_parent: ID of the post that you want the image to be attached to. If empty, the image will not be attached to any post\u003Cbr \u002F>\n-Return:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>        [\n        'url'       => $url,\u002F\u002FInput URL\n        'message'   => '',\u002F\u002FAdditional information\n        'status'    => 'error',\u002F\u002Ferror or success\n        'id'        => '',\u002F\u002FAttachment ID if added new or the attachment exists\n        'edit_link' => '',\u002F\u002FAttachment's edit link if added new or the attachment exists\n        ]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>MAY BE YOU NEED\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002F9map-map-multi-locations\u002F\" rel=\"ugc\">9Map – Map Multi Locations\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-abandoned-cart-recovery\u002F\" rel=\"ugc\">Abandoned Cart Recovery for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-advanced-product-information\u002F\" rel=\"ugc\">Advanced Product Information for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Faffi-affiliate-marketing-for-woo\u002F\" rel=\"ugc\">AFFI – Affiliate Marketing for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-alidropship\u002F\" rel=\"ugc\">ALD – Dropshipping and Fulfillment for AliExpress and WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-boost-sales\u002F\" rel=\"ugc\">Boost Sales for WooCommerce – Set up Up-Sells & Cross-Sells Popups & Auto Apply Coupon\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbopo-woo-product-bundle-builder\u002F\" rel=\"ugc\">Bopo – WooCommerce Product Bundle Builder\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbulky-bulk-edit-products-for-woo\u002F\" rel=\"ugc\">Bulky – Bulk Edit Products for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-cart-all-in-one\u002F\" rel=\"ugc\">Cart All In One For WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcatna-woo-name-your-price-and-offers\u002F\" rel=\"ugc\">Catna – Woo Name Your Price and Offers\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcheckout-upsell-funnel-for-woo\u002F\" rel=\"ugc\">Checkout Upsell Funnel for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fchinads-dropshipping-taobao-woocommerce\u002F\" rel=\"ugc\">ChinaDS – Tmall-Taobao Dropshipping for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fclear-autoptimize-cache-automatically\u002F\" rel=\"ugc\">Clear Autoptimize Cache Automatically\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcompe-woo-compare-products\u002F\" rel=\"ugc\">COMPE – WooCommerce Compare Products\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-coupon-reminder\u002F\" rel=\"ugc\">Coreem – Coupon Reminder for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-coupon-box\u002F\" rel=\"ugc\">Coupon Box for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-multi-currency\u002F\" rel=\"ugc\">CURCY – Multi Currency for WooCommerce – Smoothly on WooCommerce 9.x\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-customer-coupons\u002F\" rel=\"ugc\">Customer Coupons for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fdepart-deposit-and-part-payment-for-woo\u002F\" rel=\"ugc\">DEPART – Deposit and Part payment for Woo\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Femail-template-customizer-for-woo\u002F\" rel=\"ugc\">Email Template Customizer for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fepoi-wp-points-and-rewards\u002F\" rel=\"ugc\">EPOI – WP Points and Rewards\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fepow-custom-product-options-for-woocommerce\u002F\" rel=\"ugc\">EPOW – Custom Product Options for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Feu-cookies-bar\u002F\" rel=\"ugc\">EU Cookies Bar for WordPress\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexmage-wp-image-links\u002F\" rel=\"ugc\">EXMAGE – WordPress Image Links\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-virtual-reviews\u002F\" rel=\"ugc\">Faview – Virtual Reviews for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ffewc-extra-checkout-fields-for-woocommerce\u002F\" rel=\"ugc\">FEWC – Extra Checkout Fields For WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-free-shipping-bar\u002F\" rel=\"ugc\">Free Shipping Bar for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgift4u-gift-cards-all-in-one-for-woo\u002F\" rel=\"ugc\">GIFT4U – Gift Cards All in One for Woo\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fhandmade-dropshipping-for-etsy-and-woo\u002F\" rel=\"ugc\">HANDMADE – Dropshipping for Etsy and WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fhappy-helpdesk-support-ticket-system\u002F\" rel=\"ugc\">HAPPY – Helpdesk Support Ticket System\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjagif-woo-free-gift\u002F\" rel=\"ugc\">Jagif – WooCommerce Free Gift\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-lookbook\u002F\" rel=\"ugc\">LookBook for WooCommerce – Shoppable with Product Tags\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-lucky-wheel\u002F\" rel=\"ugc\">Lucky Wheel for WooCommerce – Spin a Sale\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-lucky-wheel\u002F\" rel=\"ugc\">Lucky Wheel Giveaway\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-notification\u002F\" rel=\"ugc\">Notification for WooCommerce | Boost Your Sales – Recent Sales Popup – Live Feed Sales – Upsells\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-orders-tracking\u002F\" rel=\"ugc\">Orders Tracking for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-photo-reviews\u002F\" rel=\"ugc\">Photo Reviews for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpofily-woo-product-filters\u002F\" rel=\"ugc\">Pofily – WooCommerce Product Filters\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fproduct-pre-orders-for-woo\u002F\" rel=\"ugc\">PRENA – Product Pre-Orders for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-product-builder\u002F\" rel=\"ugc\">Product Builder for WooCommerce – Custom PC Builder\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fproduct-size-chart-for-woo\u002F\" rel=\"ugc\">Product Size Chart For WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fproduct-variations-swatches-for-woocommerce\u002F\" rel=\"ugc\">Product Variations Swatches for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fredis-woo-dynamic-pricing-and-discounts\u002F\" rel=\"ugc\">REDIS – WooCommerce Dynamic Pricing and Discounts\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Frees-real-estate-for-woo\u002F\" rel=\"ugc\">REES – Real Estate for Woo\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fimport-shopify-to-woocommerce\u002F\" rel=\"ugc\">S2W – Import Shopify to WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsales-countdown-timer\u002F\" rel=\"ugc\">Sales Countdown Timer\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsubre-product-subscription-for-woo\u002F\" rel=\"ugc\">SUBRE – Product Subscription for WooCommerce – Recurring Payments\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-suggestion-engine\u002F\" rel=\"ugc\">Suggestion Engine for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-thank-you-page-customizer\u002F\" rel=\"ugc\">Thank You Page Customizer for WooCommerce – Increase Your Sales\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftmds-dropshipping-for-temu-and-woo\u002F\" rel=\"ugc\">TMDS – Dropshipping for TEMU and Woo\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fvargal-additional-variation-gallery-for-woo\u002F\" rel=\"ugc\">VARGAL – Additional Variation Gallery for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fvillatheme-core\u002F\" rel=\"ugc\">VillaTheme Core\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fvima-multi-customer-addresses-for-woo\u002F\" rel=\"ugc\">VIMA – Multi Customer Addresses for Woo\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fviseek-easy-custom-search\u002F\" rel=\"ugc\">VISeek – Easy Custom Search\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fw2s-migrate-woo-to-shopify\u002F\" rel=\"ugc\">W2S – Migrate WooCommerce to Shopify\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwebpos-point-of-sale-for-woocommerce\u002F\" rel=\"ugc\">WebPOS – Point of Sale for WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwpbulky-wp-bulk-edit-post-types\u002F\" rel=\"ugc\">WPBulky – WordPress Bulk Edit Post Types\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Plugin Links\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fvillatheme.com\u002Fextensions\u002Fexmage-wordpress-image-links\u002F\" rel=\"nofollow ugc\">Project Page\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fvillatheme.com\u002Fknowledge-base\u002Fsecurity-is-our-priority\u002F\" rel=\"nofollow ugc\">Report Bugs\u002FIssues\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Add images using external links - Save your storage with EXMAGE effortlessly",7000,158922,100,33,"2026-01-21T03:37:00.000Z","5.0.0","7.0",[73,74,75,76,77],"elementor-gallery-with-links","woocommerce-product-image-external-url","wordpress-gallery-custom-links","wordpress-gallery-with-links","wordpress-image-links","https:\u002F\u002Fvillatheme.com\u002Fextensions\u002Fexmage-wordpress-image-links\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fexmage-wp-image-links.zip","2022-04-14 00:00:00",{"slug":82,"name":83,"version":84,"author":85,"author_profile":86,"description":87,"short_description":88,"active_installs":28,"downloaded":89,"rating":28,"num_ratings":28,"last_updated":90,"tested_up_to":16,"requires_at_least":91,"requires_php":91,"tags":92,"homepage":96,"download_link":97,"security_score":67,"vuln_count":28,"unpatched_count":28,"last_vuln_date":37,"fetched_at":30},"steves-attributes","Steve's Attributes","1.1.0","stevegibbs","https:\u002F\u002Fprofiles.wordpress.org\u002Fstevegibbs\u002F","\u003Cp>WordPress’s Gutenberg editor makes it easy to add links to images, buttons, and text, but it doesn’t provide a straightforward way to add custom HTML attributes to those links. This is where “Steve’s Attributes” comes in.\u003C\u002Fp>\n\u003Cp>This plugin extends the core Image, Button, Paragraph, List Item, Heading, File, and Navigation Link blocks to include a “Custom Attributes” field in their link settings. You can add any HTML attributes you need, such as data attributes for popups, custom classes, tracking attributes, or accessibility enhancements.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n*   Adds a “Custom Attributes” textarea to the link settings of supported blocks.\u003Cbr \u002F>\n*   Parses attributes in \u003Ccode>key=\"value\"\u003C\u002Fcode> format (one per line).\u003Cbr \u002F>\n*   Merges \u003Ccode>class\u003C\u002Fcode> attributes properly to avoid duplicates.\u003Cbr \u002F>\n*   Super lightweight – only loads in the block editor, no frontend impact.\u003Cbr \u002F>\n*   No database queries or heavy processing.\u003Cbr \u002F>\n*   \u003Cstrong>Expanded Block Support\u003C\u002Fstrong>: Now supports Image, Button, Paragraph, List Item, Heading, File, and Navigation Link blocks.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Use Cases:\u003C\u002Fstrong>\u003Cbr \u002F>\n*   Adding popup triggers (e.g., \u003Ccode>data-popup-id=\"123\"\u003C\u002Fcode>)\u003Cbr \u002F>\n*   Custom styling classes (e.g., \u003Ccode>class=\"my-custom-class\"\u003C\u002Fcode>)\u003Cbr \u002F>\n*   Tracking attributes (e.g., \u003Ccode>data-ga-action=\"click\"\u003C\u002Fcode>)\u003Cbr \u002F>\n*   Accessibility enhancements (e.g., \u003Ccode>aria-label=\"Open details\"\u003C\u002Fcode>)\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Ch3>General Instructions\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Add one of the supported blocks to your post\u002Fpage (Image, Button, Paragraph, List Item, Heading, File, Navigation Link).\u003C\u002Fli>\n\u003Cli>Ensure the block contains a link. For example:\n\u003Cul>\n\u003Cli>\u003Cstrong>Image Block\u003C\u002Fstrong>: Set a link URL in the block settings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Button Block\u003C\u002Fstrong>: Set the button text and link URL.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Paragraph\u002FHeading\u002FList Item Blocks\u003C\u002Fstrong>: Select text and add a link using the inline link tool.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>File Block\u003C\u002Fstrong>: Upload a file, and ensure it’s linked.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Navigation Link Block\u003C\u002Fstrong>: Add a navigation item with a URL.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Select the block containing the link.\u003C\u002Fli>\n\u003Cli>In the block sidebar, locate the “Link Attributes” panel.\u003C\u002Fli>\n\u003Cli>In the “Custom Attributes” field, add your desired HTML attributes, one per line, in \u003Ccode>key=\"value\"\u003C\u002Fcode> format. You can also add classes and IDs.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Example\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>data-popup-id=”my-popup”\u003Cbr \u002F>\nrel=”noopener”\u003Cbr \u002F>\nclass=”my-custom-class”\u003Cbr \u002F>\nid=”unique-id”\u003Cbr \u002F>\n    `\u003C\u002Fp>\n","Extends Gutenberg blocks to easily add custom attributes to links in various blocks without resorting to custom HTML.",116,"2026-02-19T17:58:00.000Z","",[93,94,95,22,23],"attributes","blocks","custom-attributes","https:\u002F\u002Fwp.stevegibbs.info\u002Fsteves-attributes","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsteves-attributes.1.1.0.zip",{"slug":99,"name":100,"version":101,"author":102,"author_profile":103,"description":104,"short_description":105,"active_installs":106,"downloaded":107,"rating":108,"num_ratings":109,"last_updated":110,"tested_up_to":16,"requires_at_least":111,"requires_php":112,"tags":113,"homepage":119,"download_link":120,"security_score":121,"vuln_count":122,"unpatched_count":28,"last_vuln_date":123,"fetched_at":30},"permalink-manager","Permalink Manager Lite","2.5.3.2","Maciej Bis","https:\u002F\u002Fprofiles.wordpress.org\u002Fmbis\u002F","\u003Cp>The native WordPress permalink system is designed to be simple and easy to configure. Permalink Manager extends it and allows you to define custom URL structures and edit individual permalinks exactly the way you want.\u003C\u002Fp>\n\u003Cp>The free version lets you manage URLs for \u003Cstrong>posts, pages, and custom post types\u003C\u002Fstrong>, while the Pro version also includes support for \u003Cstrong>categories, tags, and custom taxonomies\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Fdocs\u002F?utm_source=wordpressorg\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Ffeatures\u002F?utm_source=wordpressorg\" rel=\"nofollow ugc\">Buy Permalink Manager Pro\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>The plugin \u003Cstrong>supports all custom post types and taxonomies\u003C\u002Fstrong>, and it is compatible with popular plugins like WooCommerce, Yoast SEO, WPML, and Polylang.\u003C\u002Fp>\n\u003Cp>Permalink Manager \u003Cstrong>automatically redirects original and duplicate URLs\u003C\u002Fstrong> to the correct page. Using the \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Fdocs\u002Fplugin-settings\u002Fcanonical-redirects\u002F\" rel=\"nofollow ugc\">canonical redirect\u003C\u002Fa>, it prevents the broken links that can hurt the UX and SEO, potentially causing a drop in organic traffic.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Change Single Permalinks\u003C\u002Fstrong>\u003Cbr \u002F>For a consistent and SEO-friendly URL structure, you may customize and \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Fdocs\u002Fbasics\u002Fchange-permalink\u002F\" rel=\"nofollow ugc\">change the permalink\u003C\u002Fa> of each post, page, and custom post type item.  \u003Cem>Categories, tags & custom taxonomies terms permalinks can be edited in Permalink Manager Pro.\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customize URL Formats\u003C\u002Fstrong>\u003Cbr \u002F>Using the “Permastructures” settings, you can choose the default format for custom URLs using “Permastructures” settings. The new format will be applied automatically when a new post\u002Fterm is added or once the old permalinks are regenerated.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Post Types Support\u003C\u002Fstrong>\u003Cbr \u002F>Choose the post types and taxonomies you want to customize and exclude the rest of them. The plugin supports post types and taxonomies managed with ACF, Pods, JetEngine, Toolset Types, and other plugins.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Translate Permalinks\u003C\u002Fstrong>\u003Cbr \u002F>With WPML or Polylang active, Permalink Manager allows you to translate the slug and customize the URL structure for every language separately.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Remove Parent Slugs\u003C\u002Fstrong>\u003Cbr \u002F>Remove parent slugs from your WordPress URLs organize them hierarchically by \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Fdocs\u002Ftutorials\u002Fadd-category-slug-wordpress-permalinks\u002F\" rel=\"nofollow ugc\">adding categories to custom permalinks\u003C\u002Fa>, all without writing a single line of code.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Canonical Redirect\u003C\u002Fstrong>\u003Cbr \u002F>Automatically redirect old URLs whenever they change, preventing broken links, and protecting your site’s search visibility.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Additional features available in Permalink Manager Pro\u003C\u002Fh4>\n\u003Cp>The free version covers all the necessary functions, while the premium version adds a few handy functionalities that can improve the process of adjusting WordPress permalinks.\u003C\u002Fp>\n\u003Cp>Click here for additional information and to purchase \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro?utm_source=wordpress\" rel=\"nofollow ugc\">Permalink Manager Pro\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Custom Taxonomies Support\u003C\u002Fstrong>\u003Cbr \u002F>Taxonomies are fully supported in the premium version (categories, tags & custom taxonomies). You may adjust individual term permalinks or change them all at once using “Permastructures”.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Full WooCommerce Support\u003C\u002Fstrong>\u003Cbr \u002F>Permalink Manager Pro may be used to change the URL addresses of WooCommerce products, tags, categories, and attributes. For example, you may use the plugin to \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Fdocs\u002Ftutorials\u002Fremove-product-category-woocommerce-urls\u002F\" rel=\"nofollow ugc\">remove \u002Fproduct\u002F and \u002Fproduct-category\u002F from WooCommerce URL\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Fields Support\u003C\u002Fstrong>\u003Cbr \u002F>Permalink Manager is the only actively supported WordPress plugin that allows to \u003Ca href=\"https:\u002F\u002Fpermalinkmanager.pro\u002Fdocs\u002Ftutorials\u002Fhow-to-use-custom-fields-inside-wordpress-permalinks\u002F\" rel=\"nofollow ugc\">add custom fields to permalinks\u003C\u002Fa> and requires no technical experience.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Extra Redirects\u003C\u002Fstrong>\u003Cbr \u002F>Define extra redirects (aliases) for any post, page, or term. Additionally, you may assign a redirect URL to each post\u002Fterm, which will take users to any external URL address.\u003C\u002Fli>\n\u003C\u002Ful>\n","Permalink Manager enhances WordPress’s built-in URL system, allowing you to change the URLs of native and custom post types and taxonomies.",100000,2718666,96,176,"2026-03-11T15:40:00.000Z","4.4.0","5.4",[114,115,116,117,118],"custom-permalink","custom-permalinks","permalink","permalinks","woocommerce-permalinks","https:\u002F\u002Fpermalinkmanager.pro?utm_source=plugin","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpermalink-manager.2.5.3.2.zip",91,11,"2025-09-06 00:00:00",{"slug":125,"name":126,"version":127,"author":128,"author_profile":129,"description":130,"short_description":131,"active_installs":132,"downloaded":133,"rating":134,"num_ratings":135,"last_updated":136,"tested_up_to":137,"requires_at_least":138,"requires_php":139,"tags":140,"homepage":146,"download_link":147,"security_score":121,"vuln_count":27,"unpatched_count":28,"last_vuln_date":148,"fetched_at":30},"advanced-import","Advanced Import: One-Click Demo Import for WordPress","1.4.5","AddonsPress","https:\u002F\u002Fprofiles.wordpress.org\u002Faddonspress\u002F","\u003Cp>Import Data or Demo Content which is exported by \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadvanced-export\u002F\" rel=\"ugc\">Advanced Export\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Advanced Import is the ultimate solution for WordPress theme and plugin developers who want to provide a seamless demo import experience for their users. With a simple one-click interface, it allows users to import demo content, widgets, customizer settings, and even Gutenberg block data effortlessly.\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>One-Click Demo Import:\u003C\u002Fstrong> Easily import all demo content with a single click.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizer Settings Import:\u003C\u002Fstrong> Retain your theme’s look and feel by importing customizer settings.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Widget Data Import:\u003C\u002Fstrong> Quickly set up widgets to match your demo layout.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Gutenberg Blocks Import:\u003C\u002Fstrong> Import block-based content for modern themes.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Media Files Import:\u003C\u002Fstrong> Seamlessly upload and integrate demo media.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer-Friendly Hooks:\u003C\u002Fstrong> Extend or customize the import process with available actions and filters.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Why Use Advanced Import?\u003C\u002Fh3>\n\u003Cp>Whether you’re a theme developer offering demo content or a user setting up a site, Advanced Import makes the process hassle-free. It saves time, reduces manual setup effort, and ensures consistency between demo and live sites.\u003C\u002Fp>\n\u003Ch3>Features for Theme Author\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Code\u002FPlugin example available\u003C\u002Fli>\n\u003Cli>Support for the premium version or premium plugin of the free theme\u003C\u002Fli>\n\u003Cli>Install separate dependent plugin\u002Fs for each demo starter package of the theme\u003C\u002Fli>\n\u003Cli>Categorized available demo import starter package to type and categories\u003C\u002Fli>\n\u003Cli>Search filter keywords for demo starter packages\u003C\u002Fli>\n\u003Cli>Sufficient hooks to customize the plugin design and functionality\u003C\u002Fli>\n\u003Cli>Add demo URL\u003C\u002Fli>\n\u003Cli>Add pro URL\u003C\u002Fli>\n\u003Cli>Better experience for the user\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Dashboard Location\u003C\u002Fh3>\n\u003Ch4>Theme Demo Import Screen\u003C\u002Fh4>\n\u003Cp>Dashboard -> Appearance -> Demo Import\u003C\u002Fp>\n\u003Ch4>Zip File Import Screen\u003C\u002Fh4>\n\u003Cp>Dashboard -> Tool -> Advanced Import\u003C\u002Fp>\n","Advanced Import simplifies importing demo data for WordPress sites, enabling users to import posts, pages, media, widgets, customizer settings, and Gu &hellip;",90000,1682950,88,7,"2025-01-14T16:13:00.000Z","6.7.5","5.0","5.6.20",[141,142,143,144,145],"customizer-import","demo-import","gutenberg-import","theme-import","widget-import","https:\u002F\u002Faddonspress.com\u002Fitem\u002Fadvanced-import","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadvanced-import.1.4.5.zip","2022-11-14 00:00:00",{"slug":150,"name":151,"version":152,"author":153,"author_profile":154,"description":155,"short_description":156,"active_installs":157,"downloaded":158,"rating":159,"num_ratings":160,"last_updated":161,"tested_up_to":16,"requires_at_least":162,"requires_php":71,"tags":163,"homepage":167,"download_link":168,"security_score":169,"vuln_count":170,"unpatched_count":28,"last_vuln_date":171,"fetched_at":30},"navz-photo-gallery","ACF Photo Gallery Field","3.1","Navneil Naicker","https:\u002F\u002Fprofiles.wordpress.org\u002Fnavzme\u002F","\u003Cp>\u003Cstrong>Important Notice for New Users of ACF Photo Gallery Field\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If you are installing the ACF Photo Gallery Field for the first time on your WordPress website, we’d like to inform you that this plugin will no longer be maintained as of October 2024. As an alternative, we have launched a new and improved plugin called \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Facf-galerie-4\u002F\" rel=\"ugc\">ACF Galerie 4\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>We encourage you to check out \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Facf-galerie-4\u002F\" rel=\"ugc\">ACF Galerie 4\u003C\u002Fa> for enhanced features and ongoing support. ACF Galerie 4 includes a built-in migration tool that seamlessly transfers data from ACF Photo Gallery Field or ACF Gallery Pro to ACF Galerie 4. \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fmigrate-from-acf-photo-gallery-field-to-acf-galerie-4\u002F\" rel=\"ugc\">Learn more\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Thanks\u003C\u002Fp>\n\u003Cp>A lightweight extension of Advanced Custom Field (ACF) that adds \u003Cstrong>Photo Gallery\u003C\u002Fstrong> field to any post\u002Fpages on your WordPress website.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Visually create your Fields\u003C\u002Fli>\n\u003Cli>Add multiple photos and you can also modify title, caption and link to anything\u003C\u002Fli>\n\u003Cli>Assign your fields to multiple edit pages (via custom location rules)\u003C\u002Fli>\n\u003Cli>Easily load data through a simple and friendly API\u003C\u002Fli>\n\u003Cli>Uses the native WordPress custom post type for ease of use and fast processing\u003C\u002Fli>\n\u003Cli>Uses the native WordPress metadata for ease of use and fast processing\u003C\u002Fli>\n\u003Cli>Supports WordPress classic and Gutenberg editor\u003C\u002Fli>\n\u003Cli>RESTFul API\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Donation\u003C\u002Fh4>\n\u003Cp>Navneil Naicker is the sole developer working on this free WordPress Plugin in his leisure time. He would like to integrate it with premium plugins like Elementor Pro and Advanced Custom Fields Pro. Please donate to support Navneil in continuing further development of this plugin. Click on the link “\u003Ca href=\"https:\u002F\u002Fwww.buymeacoffee.com\u002Fnavzme\" rel=\"nofollow ugc\">https:\u002F\u002Fwww.buymeacoffee.com\u002Fnavzme\u003C\u002Fa>” to donate.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>\u003Cem>acf_photo_gallery\u003C\u002Fem> is a helper function that takes in \u003Cstrong>ACF_FIELD_NAME\u003C\u002Fstrong> and \u003Cstrong>POST_ID\u003C\u002Fstrong> will query the database and compile the images for you. The output of this function will be an array.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>acf_photo_gallery(ACF_FIELD_NAME, POST_ID);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Example\u003C\u002Fh4>\n\u003Cp>The following example is using Twitter Bootstrap framework to layout. You can use any framework of your choice.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php\n    \u002F\u002FGet the images ids from the post_metadata\n    $images = acf_photo_gallery('vacation_photos', $post->ID);\n    \u002F\u002FCheck if return array has anything in it\n    if( count($images) ):\n        \u002F\u002FCool, we got some data so now let's loop over it\n        foreach($images as $image):\n            $id = $image['id']; \u002F\u002F The attachment id of the media\n            $title = $image['title']; \u002F\u002FThe title\n            $caption= $image['caption']; \u002F\u002FThe caption\n            $full_image_url= $image['full_image_url']; \u002F\u002FFull size image url\n            $full_image_url = acf_photo_gallery_resize_image($full_image_url, 262, 160); \u002F\u002FResized size to 262px width by 160px height image url\n            $thumbnail_image_url= $image['thumbnail_image_url']; \u002F\u002FGet the thumbnail size image url 150px by 150px\n            $url= $image['url']; \u002F\u002FGoto any link when clicked\n            $target= $image['target']; \u002F\u002FOpen normal or new tab\n            $alt = get_field('photo_gallery_alt', $id); \u002F\u002FGet the alt which is a extra field (See below how to add extra fields)\n            $class = get_field('photo_gallery_class', $id); \u002F\u002FGet the class which is a extra field (See below how to add extra fields)\n?>\n\u003Cdiv class=\"col-xs-6 col-md-3\">\n    \u003Cdiv class=\"thumbnail\">\n        \u003C?php if( !empty($url) ){ ?>\u003Ca href=\"\u003C?php echo $url; ?>\" \u003C?php echo ($target == 'true' )? 'target=\"_blank\"': ''; ?>>\u003C?php } ?>\n            \u003Cimg src=\"\u003C?php echo $full_image_url; ?>\" alt=\"\u003C?php echo $title; ?>\" title=\"\u003C?php echo $title; ?>\">\n        \u003C?php if( !empty($url) ){ ?>\u003C\u002Fa>\u003C?php } ?>\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003C?php endforeach; endif; ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Add Extra Fields\u003C\u002Fh4>\n\u003Cp>To add extra fields add the following to your themes functions.php file.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002FCreate extra fields called Altnative Text and Status\nfunction my_extra_gallery_fields( $args, $attachment_id, $acf_key ){\n    $args['alt'] = array(\n        'type' => 'text', \n        'label' => 'Altnative Text', \n        'name' => 'alt', \n        'value' => get_field($field . '_alt', $attachment_id)\n    );\n    $args['status'] = array(\n        'type' => 'select', \n        'label' => 'Status', \n        'name' => 'status', \n        'value' => array(\n            array(\n                '1' => 'Active',\n                 '2' => 'Inactive'\n            ), \n            get_field($field . '_status', $attachment_id)\n        )\n    );\n    return $args;\n}\nadd_filter( 'acf_photo_gallery_image_fields', 'my_extra_gallery_fields', 10, 3 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Supported field types:\u003Cbr \u002F>\n* text, date, color, datetime-local, email, number, tel, time, url, week, range, checkbox, radio, textarea, select\u003C\u002Fp>\n\u003Ch4>How to get values of extra fields\u003C\u002Fh4>\n\u003Cp>You can use ACF helper function \u003Ccode>get_field\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>get_field('photo_gallery_alt', $id);\nget_field('photo_gallery_class', $id);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Pull caption from attachment caption field\u003C\u002Fh4>\n\u003Cp>By default the caption is being pulled from description field. Add the following filter to your \u003Ccode>function.php\u003C\u002Fcode> to pull the caption from attachment caption field.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'acf_photo_gallery_caption_from_attachment', '__return_true' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>REST API\u003C\u002Fh4>\n\u003Cp>Send HTTP Request to URL to get JSON response of all posts\u003C\u002Fp>\n\u003Cpre>\u003Ccode>http:\u002F\u002F{domain}\u002Fwp-json\u002Fwp\u002Fv2\u002F{POST_TYPE}\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Send HTTP Request to URL to get JSON response of specific post\u003C\u002Fp>\n\u003Cpre>\u003Ccode>http:\u002F\u002F{domain}\u002Fwp-json\u002Fwp\u002Fv2\u002F{POST_TYPE}\u002F{POST_ID}\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>When you receive the response, see the ACF item which contains ACF photo gallery name and array of images.\u003C\u002Fp>\n\u003Ch4>Installation and basic usage tutorial\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fc7u9FwVLe9Q?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>ACF Photo Gallery Field on WordPress Custom Post Type tutorial\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F5iTV0JVFFOE?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>How to use Elementor dynamic tags with ACF Photo Gallery Field plugin tutorial\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FXlSx_weZXoU?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>Compatibility\u003C\u002Fh4>\n\u003Cp>This ACF field type is compatible with: ACF 4, 5 and 6\u003C\u002Fp>\n\u003Ch4>Issues\u003C\u002Fh4>\n\u003Cp>Just like any other WordPress plugin, this plugin can also cause issues with other themes and plugins. If you are facing issues making this plugin work on your WordPress site, please do ask for help in the support forum. This way we can help you out and prevent this issue from happening to someone else. If you want to talk to me directly, you can contact me via my website \u003Ca href=\"http:\u002F\u002Fwww.navz.me\u002F\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.navz.me\u002F\u003C\u002Fa>\u003C\u002Fp>\n","A lightweight extension of Advanced Custom Field (ACF) that adds Photo Gallery field to any post\u002Fpages on your WordPress website.",60000,634703,80,29,"2025-12-26T22:25:00.000Z","5.8",[164,20,165,21,166],"acf","fields","photo","http:\u002F\u002Fwww.navz.me\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnavz-photo-gallery.3.1.zip",95,4,"2026-02-18 14:58:38",{"attackSurface":173,"codeSignals":298,"taintFlows":319,"riskAssessment":320,"analyzedAt":325},{"hooks":174,"ajaxHandlers":294,"restRoutes":295,"shortcodes":296,"cronEvents":297,"entryPointCount":28,"unprotectedCount":28},[175,181,185,188,191,195,198,200,202,204,205,209,213,217,220,223,227,229,233,237,241,243,245,249,252,256,260,264,266,270,273,277,281,285,287,290,292],{"type":176,"name":177,"callback":178,"file":179,"line":180},"action","admin_menu","app_menu","classes\\admin.php",9,{"type":182,"name":183,"callback":183,"priority":184,"file":179,"line":184},"filter","attachment_fields_to_edit",10,{"type":182,"name":186,"callback":187,"priority":184,"file":179,"line":122},"attachment_fields_to_save","apply_filter_attachment_fields_to_save",{"type":176,"name":189,"callback":189,"file":179,"line":190},"admin_enqueue_scripts",14,{"type":182,"name":192,"callback":193,"priority":67,"file":194,"line":180},"mgcl_linkers","linker","classes\\button\\gutenberg.php",{"type":182,"name":196,"callback":197,"priority":67,"file":194,"line":184},"mgcl_button_linker","button_linker",{"type":182,"name":192,"callback":193,"priority":67,"file":199,"line":180},"classes\\button\\meow_gallery.php",{"type":182,"name":196,"callback":197,"priority":201,"file":199,"line":184},101,{"type":182,"name":192,"callback":193,"priority":67,"file":203,"line":180},"classes\\button\\native_gallery.php",{"type":182,"name":196,"callback":197,"priority":201,"file":203,"line":184},{"type":176,"name":206,"callback":207,"file":208,"line":160},"plugins_loaded","init","classes\\core.php",{"type":176,"name":210,"callback":211,"priority":184,"file":208,"line":212},"wp_footer","linkify_script",39,{"type":176,"name":214,"callback":215,"file":208,"line":216},"template_redirect","start",44,{"type":176,"name":218,"callback":218,"file":208,"line":219},"shutdown",45,{"type":176,"name":210,"callback":221,"file":208,"line":222},"unlink_lightboxes_script",46,{"type":182,"name":224,"callback":225,"priority":67,"file":208,"line":226},"the_content","linkify",49,{"type":176,"name":210,"callback":221,"file":208,"line":228},50,{"type":182,"name":230,"callback":231,"priority":184,"file":208,"line":232},"mgl_link_attributes","meow_gallery_link_attributes",53,{"type":176,"name":234,"callback":235,"file":208,"line":236},"rest_api_init","add_rest_api",81,{"type":182,"name":238,"callback":239,"priority":184,"file":240,"line":135},"gallery_custom_links_classes","meow_gallery","classes\\extra.php",{"type":182,"name":238,"callback":242,"priority":184,"file":240,"line":180},"kadence_gallery",{"type":182,"name":238,"callback":244,"priority":184,"file":240,"line":122},"wpbakery",{"type":176,"name":246,"callback":247,"file":248,"line":135},"admin_notices","mfrh_admin_notices","classes\\init.php",{"type":176,"name":234,"callback":234,"file":250,"line":251},"classes\\rest.php",15,{"type":176,"name":246,"callback":253,"file":254,"line":255},"admin_notices_licensed_free","common\\admin.php",72,{"type":182,"name":257,"callback":258,"priority":184,"file":254,"line":259},"plugin_row_meta","custom_plugin_row_meta",77,{"type":182,"name":261,"callback":262,"priority":184,"file":254,"line":263},"edd_sl_api_request_verify_ssl","request_verify_ssl",78,{"type":176,"name":207,"callback":265,"file":254,"line":108},"process_deferred_instances",{"type":176,"name":177,"callback":267,"priority":268,"file":254,"line":269},"admin_menu_start",5,153,{"type":182,"name":271,"callback":271,"priority":106,"file":254,"line":272},"admin_footer_text",158,{"type":176,"name":274,"callback":275,"file":254,"line":276},"admin_footer","output_network_license_modal",218,{"type":176,"name":278,"callback":279,"file":254,"line":280},"admin_head","closure",456,{"type":176,"name":246,"callback":282,"file":283,"line":284},"admin_notices_news","common\\news.php",43,{"type":182,"name":286,"callback":279,"file":283,"line":216},"safe_style_css",{"type":176,"name":246,"callback":288,"file":289,"line":68},"admin_notices_rating","common\\ratings.php",{"type":182,"name":286,"callback":279,"file":289,"line":291},34,{"type":176,"name":234,"callback":234,"file":293,"line":190},"common\\rest.php",[],[],[],[],{"dangerousFunctions":299,"sqlUsage":300,"outputEscaping":305,"fileOperations":27,"externalRequests":28,"nonceChecks":28,"capabilityChecks":122,"bundledLibraries":318},[],{"prepared":170,"raw":27,"locations":301},[302],{"file":293,"line":303,"context":304},86,"$wpdb->get_var() with variable interpolation",{"escaped":306,"rawEcho":268,"locations":307},70,[308,310,312,314,316],{"file":208,"line":53,"context":309},"raw output",{"file":208,"line":311,"context":309},368,{"file":254,"line":313,"context":309},351,{"file":254,"line":315,"context":309},357,{"file":254,"line":317,"context":309},469,[],[],{"summary":321,"deductions":322},"The 'gallery-custom-links' plugin v2.2.9 exhibits a generally positive security posture, with a strong emphasis on secure coding practices. The static analysis reveals a commendable absence of dangerous functions, a high percentage of properly escaped output, and a significant number of capability checks, indicating a developer conscious of common security pitfalls.  The complete lack of unprotected AJAX handlers, REST API routes, and shortcodes significantly limits the plugin's attack surface.  Furthermore, the absence of any identified taint flows with unsanitized paths or critical\u002Fhigh severity vulnerabilities in the code analysis is a strong positive indicator.  However, a previously documented medium severity Cross-Site Scripting (XSS) vulnerability, though now patched, suggests a past oversight in input sanitization or output escaping for web page generation. While no current unpatched vulnerabilities exist, this history warrants continued vigilance.",[323],{"reason":324,"points":184},"Previous medium severity XSS vulnerability","2026-03-16T17:23:46.962Z",{"wat":327,"direct":336},{"assetPaths":328,"generatorPatterns":331,"scriptPaths":332,"versionParams":333},[329,330],"\u002Fwp-content\u002Fplugins\u002Fgallery-custom-links\u002Fapp\u002Findex.js","\u002Fwp-content\u002Fplugins\u002Fgallery-custom-links\u002Fapp\u002Fvendor.js",[],[330,329],[334,335],"gallery-custom-links\u002Fapp\u002Findex.js?ver=","gallery-custom-links\u002Fapp\u002Fvendor.js?ver=",{"cssClasses":337,"htmlComments":338,"htmlAttributes":342,"restEndpoints":347,"jsGlobals":349,"shortcodeOutput":351},[],[339,340,341],"XXXX: Custom modification to add \"noopener noreferrer\" als REL-option, Christoph Letmaier, 14.01.2020","XXXX: Custom code for new aria-label field, Christoph Letmaier, 14.01.2020","XXXX: Custom code for saving _gallery_link_aria, Christoph Letmaier, 14.01.2020",[343,344,345,346],"gallery_link_url","gallery_link_target","gallery_link_rel","gallery_link_aria",[348],"\u002Fgallery-custom-links\u002Fv1",[350],"mgcl_gallery_custom_links",[]]