{"id":7054,"date":"2009-10-26T22:55:16","date_gmt":"2009-10-26T22:55:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/piwigopress\/"},"modified":"2026-05-26T19:58:56","modified_gmt":"2026-05-26T19:58:56","slug":"piwigopress","status":"publish","type":"plugin","link":"https:\/\/tah.wordpress.org\/plugins\/piwigopress\/","author":5086594,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.33dev","stable_tag":"trunk","tested":"6.7.5","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"PiwigoPress","header_author":"Norbert Preining","header_description":"","assets_banners_color":"788296","last_updated":"2026-05-26 19:58:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/wordpress.org\/plugins\/piwigopress\/","header_author_uri":"http:\/\/www.preining.info\/","rating":3.3,"author_block_rating":0,"active_installs":200,"downloads":18207,"num_ratings":7,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.04":{"tag":"1.04","author":"vpiwigo","date":"2012-07-25 15:08:39"},"2.00":{"tag":"2.00","author":"vpiwigo","date":"2012-07-25 14:26:53"},"2.10":{"tag":"2.10","author":"vpiwigo","date":"2012-08-05 17:11:32"},"2.23":{"tag":"2.23","author":"norbusan","date":"2014-11-20 06:08:51"},"2.24":{"tag":"2.24","author":"norbusan","date":"2014-11-20 06:29:39"},"2.25":{"tag":"2.25","author":"norbusan","date":"2014-12-21 12:01:47"},"2.26":{"tag":"2.26","author":"norbusan","date":"2015-02-18 23:08:47"},"2.27":{"tag":"2.27","author":"norbusan","date":"2015-03-06 00:33:03"},"2.28":{"tag":"2.28","author":"norbusan","date":"2015-04-17 09:00:42"},"2.29":{"tag":"2.29","author":"norbusan","date":"2015-04-22 01:09:35"},"2.30":{"tag":"2.30","author":"norbusan","date":"2015-07-25 06:08:25"},"2.31":{"tag":"2.31","author":"norbusan","date":"2015-09-01 00:31:04"},"2.32":{"tag":"2.32","author":"norbusan","date":"2018-02-10 00:08:30"},"2.34":{"tag":"2.34","author":"norbusan","date":"2026-05-26 19:59:25"}},"upgrade_notice":{"2.21":"<p>Performances<\/p>","2.20":"<p>Swiftly transform your blog in a photoblog.<\/p>","2.00":"<p>Previous PiwigoPress releases didn&#039;t support the most Piwigo recent releases (if you upgrade your Piwigo Gallery to 2.4.x or above, PiwigoPress 1.04 and older releases will fail).<\/p>"},"ratings":{"1":3,"2":0,"3":0,"4":0,"5":4},"assets_icons":[],"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":598779,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.04","2.00","2.10","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.34"],"block_files":[],"assets_screenshots":{"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3549723,"resolution":"9","location":"plugin","width":759,"height":593},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3549723,"resolution":"7","location":"plugin","width":773,"height":548},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3549723,"resolution":"3","location":"plugin","width":797,"height":508},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3549723,"resolution":"1","location":"plugin","width":797,"height":508},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3549723,"resolution":"8","location":"plugin","width":610,"height":207},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3549723,"resolution":"6","location":"plugin","width":711,"height":64},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3549723,"resolution":"4","location":"plugin","width":559,"height":422},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3549723,"resolution":"5","location":"plugin","width":590,"height":974},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3549723,"resolution":"2","location":"plugin","width":312,"height":844}},"screenshots":{"1":"Widget parameters for the demo gallery","2":"Expected result in your sidebar","3":"Widget parameters for your gallery (on the same domain)","4":"Piwigo admin Photo sizes (from a Gallery website)","5":"PiwigoPress shortcode samples","6":"PiwigoPress shortcode generator above Post\/Page editor usable with both Visual\/HTML editor.","7":"Buttons, Drag and Drop zones for a total intuitive interface.","8":"Generation and insertion of the shortcodes are done at caret (insert cursor) position.","9":"Expected result on your page or post of your Wordpress blog."}},"plugin_section":[],"plugin_tags":[4918,210,214,3790,80],"plugin_category":[43,50],"plugin_contributors":[84134,84135],"plugin_business_model":[],"class_list":["post-7054","plugin","type-plugin","status-publish","hentry","plugin_tags-galleries","plugin_tags-gallery","plugin_tags-pictures","plugin_tags-randomize","plugin_tags-shortcode","plugin_category-customization","plugin_category-media","plugin_contributors-norbusan","plugin_contributors-vpiwigo","plugin_committers-norbusan","plugin_committers-vpiwigo"],"banners":{"banner":"https:\/\/ps.w.org\/piwigopress\/assets\/banner-772x250.png?rev=598779","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/piwigopress_788296.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-1.jpg?rev=3549723","caption":"Widget parameters for the demo gallery"},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-2.jpg?rev=3549723","caption":"Expected result in your sidebar"},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-3.jpg?rev=3549723","caption":"Widget parameters for your gallery (on the same domain)"},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-4.jpg?rev=3549723","caption":"Piwigo admin Photo sizes (from a Gallery website)"},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-5.jpg?rev=3549723","caption":"PiwigoPress shortcode samples"},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-6.jpg?rev=3549723","caption":"PiwigoPress shortcode generator above Post\/Page editor usable with both Visual\/HTML editor."},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-7.jpg?rev=3549723","caption":"Buttons, Drag and Drop zones for a total intuitive interface."},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-8.jpg?rev=3549723","caption":"Generation and insertion of the shortcodes are done at caret (insert cursor) position."},{"src":"https:\/\/ps.w.org\/piwigopress\/trunk\/screenshot-9.jpg?rev=3549723","caption":"Expected result on your page or post of your Wordpress blog."}],"raw_content":"<!--section=description-->\n<p>On the one hand, PiwigoPress is a WordPress <strong>Sidebar Widget<\/strong> that links\nyour blog to some public pictures of a Piwigo gallery.  Thus, a Piwigo\ngallery with several public pictures in it is a prerequisite to make it\nworking. But even if you don't have one yet, you can nonetheless give this\nplugin a try by using the Official Piwigo <a href=\"http:\/\/piwigo.org\/demo\/\" title=\"The demonstration gallery\">demonstration gallery<\/a> before\nsetting up your own gallery.<\/p>\n\n<p>PiwigoPress generates several highly valuable links in sidebars of your\nWordPress blog, all of them being optional: a thumbnail linking to\nthe corresponding picture page, menus directing to all albums defined\nas public in the gallery, several additional links to most recent, most\nviewed, most commented pictures, and more.<\/p>\n\n<p>On the other hand, by using <strong>a shortcode<\/strong> [PiwigoPress ...] you can add\nany public picture of a Piwigo gallery. Here again you should try even\nthough you don't have yet your Piwigo Gallery. Have a look with\n[PiwigoPress id=72 url='http:\/\/piwigo.org\/demo'] in a post or page.<\/p>\n\n<p>Above all, PiwigoPress provides a shortcode <strong>generator<\/strong>. Each time you\nadd some pictures to your gallery you will be able to add a post related\nto your last uploaded photos. So, your friends and family are going to\nlike your photos and Search Engines are going reference your gallery with\nthe refbacks provided by PiwigoPress.<\/p>\n\n<p>When you've finished testing and want to create you own gallery, go to the\nPiwigo <a href=\"http:\/\/piwigo.org\/basics\/downloads\" title=\"Piwigo download page\">download page<\/a>, where you'll find all the links you might need.<\/p>\n\n<p>Try \"NetInstall\" first. If it fails, switch to the \"Package\" download and\nfollow the full installation procedure. When ready, if you are a bit lost,\njust try Photos add page sheets (Web form, Applications, FTP + Synchronization) \nin your Piwigo gallery administration page.<\/p>\n\n<p>Development of PiwigoPress is open to contributions, please use the\n<a href=\"https:\/\/github.com\/norbusan\/piwigopress\">github page<\/a> for patches, bug reports, and issues.<\/p>\n\n<h3>Copyright\/License<\/h3>\n\n<p>PiwigoPress WordPress Plugin<\/p>\n\n<p>Copyright 2009-2012  VDigital\n  Copyright 2014-2024  Norbert Preining<\/p>\n\n<p>Contributions by<\/p>\n\n<p>R\u00fcdiger Schulz 2015 (copyright transfered)\n  Anton Lavrov 2015<\/p>\n\n<p>Anton Lavrov's contribution are under GPLv2+:\n  On Wed, 15 Jul 2015, Anton Lavrov wrote:<\/p>\n\n<blockquote>\n  <p>Hi Norbert,<\/p>\n  \n  <p>I hereby confirm that my contributions are under GPLv2 or higher.<\/p>\n  \n  <p>Please let me know if this is not exactly the wording you need.<\/p>\n<\/blockquote>\n\n<p>PiwigoPress is distributed under the terms of the GNU GPL version 2+<\/p>\n\n<p>This program is free software: you can redistribute it and\/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 2 of the License, or\n(at your option) any later version.<\/p>\n\n<p>This program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.<\/p>\n\n<p>You should have received a copy of the GNU General Public License\nalong with this program.  If not, see if not, write to the Free Software\nFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA<\/p>\n\n<!--section=installation-->\n<p>How to install manually PiwigoPress and get it working ? (automatic\ninstallation is working perfectly).<\/p>\n\n<ol>\n<li>Upload <code>PiwigoPress<\/code> complete folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Access to Widgets, draw PiwigoPress to the sidebar you want or create\/update a post\/page and click on the PP icon above the editor area.<\/li>\n<li>Don't forget that any gallery URL is the folder address (ending with a slash (\"\/\") where is ws.php is available.<\/li>\n<li>The selected gallery Webservices have to be opened, and some public pictures have to be available (and unlocked). <\/li>\n<\/ol>\n\n<p>Explanation of Plugin Widget data fields.<\/p>\n\n<ul>\n<li>Title: To use in the sidebar<\/li>\n<li>Local directory (if local): Piwigo installation directory (on the same website)<\/li>\n<li>(or) External gallery URL: URL to the gallery (if not local)<\/li>\n<li>Square, Thumbnail, XXS - tiny,... : see you Piwigo configuration [Photo sizes] admin page<\/li>\n<li>Orientation criteria : Any, portrait, landscape<\/li>\n<li>Link type: Where to open photos on clicks<\/li>\n<li>Sort order: select photos according to these criteria - by default descending (most recent for dates)<\/li>\n<li>Ascending order: if one want ascending order<\/li>\n<li>Number of pictures (0=none): Number of thumbnails to get<\/li>\n<\/ul>\n\n<p>Optional parameters<\/p>\n\n<ul>\n<li>Album id (0=all): Pictures from a specific Piwigo album or from all<\/li>\n<li>Since X months (0=all): Age of posted picture<\/li>\n<li>Pre and post-code: raw html code that is added just before the images<\/li>\n<li>CSS DIV class: For your blog design<\/li>\n<li>CSS IMG class: For your blog design<\/li>\n<li>Album menu: Includes all links related to Piwigo albums<\/li>\n<\/ul>\n\n<p>All below selectable option are special Piwigo links to include:<\/p>\n\n<ul>\n<li>Most visited<\/li>\n<li>Best rated<\/li>\n<li>Most commented (need a plugin in the client gallery)<\/li>\n<li>Random<\/li>\n<li>Recent pics<\/li>\n<li>Calendar<\/li>\n<li>Keywords<\/li>\n<li>Comments <\/li>\n<\/ul>\n\n<p>Explanation of Plugin Shortcode attributes.<\/p>\n\n<ul>\n<li>id: (required) Photo Numeric identifier. It's also possible to specify several ids for one shortcode, e.g.: id='2,5-7,4'<\/li>\n<li>url: (mandadory for first usage in a post or to change to another) domaine or domaine\/piwigo-folder <\/li>\n<li>size: (default size='la') 2 letters as sq(Square), (th)Thumbnail, (2s)XXS - tiny, (xs)XS - extra small, (sm)S - small, \n(me)M - medium, (la)L - large, (xl)XL - extra large,(xx)XXL - huge : see you Piwigo configuration [Photo sizes] admin page<\/li>\n<li>class : (optional) additional CSS class selectors at DIV tag level (e.g. class=\"img-drop-cap img-shadow left\")<\/li>\n<li>style: (optional) any additional CSS rules at DIV tag level (e.g. style=\"background-color: rgba(16, 64, 192, 0.05);\")<\/li>\n<li>name: (0,1,auto) (0 by default) add the photo name in a blockquote from name field: 0 disables, 1 enables, 'auto' tries to show only names that do not look like auto-generated names (group of character followed by group of digits with optional picture extension coinciding with file name)<\/li>\n<li>desc: (0,1) (0 by default) add the photo description in a blockquote from description field \nin the Edit photo [Properties] admin page if there is a filled description there<\/li>\n<li>lnktype: (string, default lnktype='picture') 'none' : no link, 'picture' : link to picture.php, 'album' : link to index.php\/category, 'albumpicture' : link to picture.php within the album<\/li>\n<li>opntype: (string, default opntype='_blank') '_blank': open link in new window or tab, '_self': open link in same window\/tab<\/li>\n<\/ul>\n\n<p>\"style\" is not used by the Shortcode generator<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"widget%20%28only%29%3A%20how%20can%20i%20get%20any%20thumbnails%20%3F\"><h3>Widget (only): How can I get any thumbnails ?<\/h3><\/dt>\n<dd><ul>\n<li>Just have the URL without the \/index.php? on the end.<\/li>\n<li>Just have recent pictures in the gallery.<\/li>\n<li>Change Since X months (0=all) from 12 to 0<\/li>\n<li>Set \"Number of pictures (0=none)\" to 1 or 2  <\/li>\n<li>If it doesn't work, see the provided screenshots...<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20can%20i%20get%20other%20sizes%20%3F%20i%20only%20have%20thumbs%20and%20squares.\"><h3>How can I get other sizes ? I only have thumbs and squares.<\/h3><\/dt>\n<dd><ul>\n<li>In your gallery admin pages, find Configuration \nand there select: Options &gt; Photo sizes &gt; Multiple size &gt; show details<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20can%20i%20get%20squared%20thumbnails%20%3F\"><h3>How can I get squared thumbnails ?<\/h3><\/dt>\n<dd><ul>\n<li>maybe you should try to upgrade your gallery to Piwigo 2.4.x or above.<\/li>\n<li>See screenshots<\/li>\n<\/ul><\/dd>\n<dt id=\"widget%20%28only%29%3A%20with%20link%20type%20album%20which%20album%20would%20be%20selected%20%3F\"><h3>Widget (Only): With Link type Album which album would be selected ?<\/h3><\/dt>\n<dd><p>If Album = 0 the link will remain to the picture page.\nOtherwise, if Number of pictures &gt; 0 the first picture will link the Album page, next pictures will refer to their picture page.<\/p><\/dd>\n<dt id=\"shortcode%20%28only%29%3A%20with%20link%20type%20album%20which%20album%20would%20be%20selected%20%3F\"><h3>Shortcode (Only): With Link type Album which album would be selected ?<\/h3><\/dt>\n<dd><p>Picture is going to have a link to its most recent Album page (Upcoming releases should cover other cases).<\/p><\/dd>\n<dt id=\"shortcode%20generator%20%28only%29%3A%20why%20did%20i%20get%20a%20warning%20message%20%3F\"><h3>Shortcode generator (only): Why did I get a warning message ?<\/h3><\/dt>\n<dd><ul>\n<li>Message is \"No available public picture or Piwigo release &lt; 2.4.x\" (Won't be translated)<\/li>\n<li>Disconnect you from the gallery and try to access to any Albums, maybe all pictures are locked or private<\/li>\n<li>Second possible cause: Old piwigo release. Only recent releases (2.4 and above) provide several picture sizes.<\/li>\n<li>Backward compatibility below Piwigo 2.4 is limited to Widget sidebar functions<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20do%20i%20arrange%20images%20horizontally%3F\"><h3>How do I arrange images horizontally?<\/h3><\/dt>\n<dd><p>Since images are generated in the following way:\n    ```<\/p>\n\n\n   &lt;div class=&quot;PWGP_shortcode \"&gt;\n      ...img...\n    \n\n\n<pre><code>```\n<\/code><\/pre>\n\n<p>horizontal alignment can easily be achieved by adding the following code\nto either custom css or child theme css:\n    <code>.PiwigoPress_photoblog {\n  display:inline-block;\n}\n.PWGP_shortcode {\n  display:inline-block;\n}<\/code><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.33dev<\/h4>\n\n<ul>\n<li>security: fix authenticated (Contributor+) stored XSS in the [PiwigoPress] shortcode by escaping the <code>class<\/code>, <code>style<\/code>, <code>size<\/code>, <code>opntype<\/code>, URL and title attributes (Wordfence advisory)<\/li>\n<li>security: switch all Piwigo web-service calls from <code>format=php<\/code> + <code>unserialize()<\/code> to <code>format=json<\/code> + <code>json_decode()<\/code> to remove a PHP object-injection \/ RCE primitive on responses from the (potentially untrusted or MITM'd) remote Piwigo gallery<\/li>\n<li>security: tighten AJAX endpoints \u2014 <code>pwgp-categories<\/code> and <code>pwgp-thumbnails<\/code> now require <code>edit_others_posts<\/code> and a verified nonce; URLs go through an SSRF guard that rejects non-http(s) schemes and private\/loopback\/link-local hosts<\/li>\n<li>security: <code>Save_options<\/code> (post-save handler) now verifies a nonce, capability and skips autosaves\/revisions, and sanitises every field before writing the global picker defaults<\/li>\n<li>security: stop leaking remote API responses and outbound URLs as HTML comments on rendered pages<\/li>\n<li>security: stop trusting <code>$_SERVER['HTTP_HOST']<\/code> \u2014 use <code>home_url()<\/code> for default URL construction<\/li>\n<li>security: escape every value rendered by the widget (<code>esc_attr<\/code>\/<code>esc_url<\/code>\/<code>esc_html<\/code>), including data coming back from the remote Piwigo gallery<\/li>\n<li>fix: <code>array_change_key_case($parm)<\/code> would TypeError on PHP 8 when the shortcode had no attributes (cast to array first)<\/li>\n<li>fix: drop dead <code>get_magic_quotes_gpc()<\/code> branch in <code>PWGP_secure<\/code> (removed in PHP 8.0 \u2014 was a fatal error)<\/li>\n<li>fix: compute the \"since X months\" cutoff in PHP instead of via raw SQL on <code>wpdb<\/code><\/li>\n<li>fix: <code>PiwigoPress::update()<\/code> no longer triggers PHP 8 warnings for missing widget-form keys; every field is now read through an <code>isset()<\/code> helper<\/li>\n<li>drop dead TinyMCE 3 fallback (<code>tinyMCE.execInstanceCommand<\/code>); WordPress has shipped TinyMCE 4+ since 3.9<\/li>\n<li>harden direct-access guards: add <code>if (!defined('ABSPATH')) exit;<\/code> to every PHP file<\/li>\n<li>replace <code>@include 'piwigopress_admin.php'<\/code> with <code>require_once<\/code> so real errors aren't silently swallowed<\/li>\n<li>move the widgets-screen helper script enqueue from inside the widget <code>form()<\/code> method to <code>admin_enqueue_scripts<\/code> filtered on <code>widgets.php<\/code><\/li>\n<li>only persist <code>PiwigoPress_previous_url<\/code> when the writer has <code>edit_others_posts<\/code>, removing a per-render DB write and preventing low-privileged users from rewriting the site-wide default<\/li>\n<li>modernize jQuery calls in <code>piwigopress_adm.js<\/code> (<code>.size()<\/code> \u2192 <code>.length<\/code>, <code>.unbind()<\/code> \u2192 <code>.off()<\/code>)<\/li>\n<li>drop the stale shipped <code>js\/piwigopress_adm.min.js<\/code> (was diverging from the source); load the unminified file instead<\/li>\n<li>compatibility metadata: bump <code>Requires at least<\/code> to 5.0 and <code>Tested up to<\/code> to 6.7, declare <code>Requires PHP: 7.4<\/code><\/li>\n<li>security: fix reflected XSS in the [PiwigoPress] shortcode error message when the <code>id<\/code> attribute is malformed (the raw value was concatenated into a translation string and returned as HTML)<\/li>\n<li>security: whitelist enum-style shortcode attributes (<code>size<\/code>, <code>lnktype<\/code>, <code>opntype<\/code>, <code>ordertype<\/code>, <code>name<\/code>) and run <code>class<\/code> through <code>sanitize_html_class<\/code> \/ <code>style<\/code> through <code>safecss_filter_attr<\/code> to block CSS-based payloads<\/li>\n<li>security: switch outbound HTTP from <code>wp_remote_get<\/code> to <code>wp_safe_remote_get<\/code> with <code>redirection =&gt; 0<\/code> and <code>timeout =&gt; 5<\/code> \u2014 blocks SSRF via 30x redirects to internal hosts and bounds the request window<\/li>\n<li>security: <code>unserialize()<\/code> of the legacy <code>PiwigoPress_previous_options<\/code> option now uses <code>allowed_classes =&gt; false<\/code><\/li>\n<li>security: escape <code>previous_url<\/code> and <code>photo_class<\/code> when rendering the picker form (defensive against legacy unsanitised option values)<\/li>\n<li>fix: detect HTTPS via <code>is_ssl()<\/code> so reverse-proxy <code>X-Forwarded-Proto<\/code> is honoured<\/li>\n<li>security: tighten <code>pwgp-categories<\/code> \/ <code>pwgp-thumbnails<\/code> to <code>edit_others_posts<\/code> (Editor+) \u2014 these endpoints perform server-side HTTP fetches, so we want them above Contributor scope even though the URL guard is in place<\/li>\n<li>security: escape every URL\/text in the widget's category-menu output via <code>esc_url<\/code> \/ <code>esc_attr<\/code> \/ <code>esc_html<\/code>; store <code>external<\/code> widget URL with <code>esc_url_raw<\/code> on save<\/li>\n<li>security: wrap every translated string used in the admin picker heredoc with <code>esc_html__<\/code> \/ <code>esc_attr__<\/code> so a malicious translation can't inject HTML<\/li>\n<li>fix: guard <code>$PWG_Adm<\/code> with <code>isset()<\/code> to suppress the PHP 8 undefined-variable warning when <code>piwigopress_admin.php<\/code> is reloaded<\/li>\n<li>fix: stop hard-coding the plugin directory name in asset URLs \u2014 use <code>plugins_url( ..., __FILE__ )<\/code> so the plugin keeps working if the directory is renamed<\/li>\n<li>fix: move CSS\/JS enqueueing from <code>in_admin_header<\/code> \/ <code>in_admin_footer<\/code> to <code>admin_enqueue_scripts<\/code> \/ <code>wp_enqueue_scripts<\/code>. The previous hooks fire <em>after<\/em> <code>admin_print_*_scripts<\/code>, so <code>wp_enqueue_script<\/code> was a no-op and the classic-editor picker (<code>#PWGP_button<\/code>) never appeared on modern WordPress \u2014 replace the hand-rolled <code>&lt;link&gt;<\/code> echo with <code>wp_enqueue_style<\/code> while we're at it<\/li>\n<li>fix media-button shortcode generator broken on PHP 8+ (replace PHP4-style <code>PiwigoPress_Admin()<\/code> constructor with <code>__construct()<\/code> and drop deprecated by-reference <code>&amp;$this<\/code>)<\/li>\n<li>add Gutenberg (block editor) support: new \"PiwigoPress\" entry in the editor's more-menu opens a modal with the existing photo picker and inserts the generated shortcode as a <code>core\/shortcode<\/code> block<\/li>\n<li>harden classic JS: guard <code>window.tinyMCE.majorVersion<\/code> access and route shortcode insertion through a <code>piwigopress:insert<\/code> custom event so other editors can intercept<\/li>\n<\/ul>\n\n<h4>2.33<\/h4>\n\n<ul>\n<li>fix widget initialization for newer PHP versions<\/li>\n<\/ul>\n\n<h4>2.32<\/h4>\n\n<h4>2.31<\/h4>\n\n<ul>\n<li>relax requirement what image sizes galleries have to provide (Issue 21)<\/li>\n<li>allow selecting the order of photos for the widget (Issue 20)<\/li>\n<\/ul>\n\n<h4>2.30<\/h4>\n\n<ul>\n<li>multiple image ids can be used in the shortcode (by Anton Lavrov)<\/li>\n<li>support for displaying the photo name (title) (by Anton Lavrov)<\/li>\n<li>shortcode generator - support name setting<\/li>\n<li>fix 'albumpicture' setting not being preserved<\/li>\n<\/ul>\n\n<h4>2.29<\/h4>\n\n<ul>\n<li>security related improvements by Ru\u0308diger Schulz, big thanks!<\/li>\n<\/ul>\n\n<h4>2.28<\/h4>\n\n<ul>\n<li>use \"album\" instead of \"category\" in the user interface, as this is what Piwigo calls it (Issue 14)<\/li>\n<li>allow loading of albums from remote installations (Issue 13, 5)<\/li>\n<\/ul>\n\n<h4>2.27<\/h4>\n\n<ul>\n<li>widget configuration now allows adding html code just before and after the included photos, but before the divs. This requires the 'unfiltered_html' permission for the user editing the widget.<\/li>\n<\/ul>\n\n<h4>2.26<\/h4>\n\n<ul>\n<li>new parameter for widget and shortcode: opntype: '_blank' (open in new window\/tab) or '_self' (open in same) (Issue 10)<\/li>\n<li>set alt parameter of images to 'name' (plus 'comment', if available) if the piwigo image (Issue 8)<\/li>\n<li>make widget configuration background white instead of transparent for readability<\/li>\n<\/ul>\n\n<h4>2.25<\/h4>\n\n<ul>\n<li>fix some peculiarities with the album list download<\/li>\n<li>update compatibility to 4.1<\/li>\n<\/ul>\n\n<h4>2.24<\/h4>\n\n<ul>\n<li>new maintainership<\/li>\n<li>fix compatibility with piwigo 1.6 and wordpress 4.0<\/li>\n<li>allow url to be \"\/foo\/bar\" like on local server, preserving http(s)<\/li>\n<li>fix compatibility with tinyMCE v4 (WordPress 1.9)<\/li>\n<li>support \/\/host\/path and use either http or https<\/li>\n<li>link tagets to photo are now within the first album of the photo<\/li>\n<li>permalinks are used for albums as far as possible<\/li>\n<li>support pulling from a specific album instead of only from all photos<\/li>\n<\/ul>\n\n<h4>2.23<\/h4>\n\n<ul>\n<li>WordPress 3.5.1 support  <\/li>\n<li>Bug: WordPress corrupted RSS feeds ( http:\/\/wordpress.org\/support\/topic\/rss-feed-100?replies=4 ) <\/li>\n<li>Support of Piwigo 2.4.x and 2.5.x (and probably above)<\/li>\n<\/ul>\n\n<h4>2.22<\/h4>\n\n<ul>\n<li><strong>New shortcode parameter<\/strong> lnktype = 'picture', 'none', or 'album' (most recent album id) : indicates the link type of the shortcoded picture<\/li>\n<li>Small bugs (functional defects) within Shortcode generator have been corrected <\/li>\n<li>Shortcode generator generates lnktype parameter<\/li>\n<li><strong>New widget parameter<\/strong> Link type (Differ from lnktype here above) \"album\" link the first picture to the selected album id<\/li>\n<li><strong>New Caption widget parameter<\/strong> to have the caption directly with the displayed and selected pictures.<\/li>\n<li>Sidebar widget has been totally rewritten  <\/li>\n<\/ul>\n\n<h4>2.21<\/h4>\n\n<ul>\n<li>Minor issues solved in drag &amp; drop.<\/li>\n<li>jQuery code reviewed<\/li>\n<li>WordPress 3.4.2 support \nIf you don't have your own up-to-date Piwigo gallery, just try it with Piwigo demo URL: http:\/\/piwigo.org\/demo\/<\/li>\n<\/ul>\n\n<h4>2.20<\/h4>\n\n<ul>\n<li>Edit post\/page shortcode generator using Drag-n-drop (a useful tool for your photoblog). \nIf you don't have your own up-to-date Piwigo gallery, just try it with Piwigo demo URL: http:\/\/piwigo.org\/demo\/<\/li>\n<\/ul>\n\n<h4>2.10<\/h4>\n\n<ul>\n<li>I18n version (Hugarian)<\/li>\n<li>Widget: Largest sizes added (from user request)<\/li>\n<li>WordPress shortcode for post\/page: e.g. [PiwigoPress id=72 url='http:\/\/piwigo.org\/demo\/']<\/li>\n<\/ul>\n\n<h4>2.00<\/h4>\n\n<ul>\n<li>Support of WordPress from 2.8.0 to 3.4.1 (and probably above)<\/li>\n<li>Support of Piwigo 2.4.x (and probably above)<\/li>\n<li>Support of Piwigo 2.0.x - 2.3.x assumed <\/li>\n<li>cURL access support (3rd way to solve webservice call issues)<\/li>\n<li>CSS DIV class: img-shadow and\/or img-show-desc are now provided<\/li>\n<li>Orientation filtering<\/li>\n<\/ul>\n\n<h4>1.04<\/h4>\n\n<ul>\n<li>Alternate pwg_get_contents (file&#095;get&#095;contents, fsockopen, ...)<\/li>\n<li>cURL is coming<\/li>\n<\/ul>\n\n<h4>1.03<\/h4>\n\n<ul>\n<li>Project rename: Directory name changed for WordPress constraints<\/li>\n<li>Language issue solved <\/li>\n<li>Pre-version for WordPress publication<\/li>\n<\/ul>\n\n<h4>1.02<\/h4>\n\n<ul>\n<li>Project rename: Public Piwigo WordPress Widget becomes PiwigoPress<\/li>\n<li>I18n version (Italian)<\/li>\n<\/ul>\n\n<h4>1.01<\/h4>\n\n<ul>\n<li>I18n version (French, Spanish,...)<\/li>\n<li>Link bug with some theme... Solved.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>First version.<\/li>\n<\/ul>","raw_excerpt":"From any open API Piwigo gallery, swiftly include your photos in Posts\/Pages and\/or add randomized thumbnails and menus in your sidebar.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/7054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=7054"}],"author":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vpiwigo"}],"wp:attachment":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=7054"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=7054"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=7054"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=7054"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=7054"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=7054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}