[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fS0GfOk5heBqbN_PD1ckjXTjOoqFFfONz3cAkKRlI-tM":3,"$fOng3uIr3UbLPqrIYEZ6FkydoRfruVADVmZeQJM9dWPA":443,"$f8x1Q8QxdCw5Gab0BcPURHvjHYOs0LlFSdKwfHfFcZ64":447},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":22,"download_link":23,"security_score":24,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":26,"discovery_status":27,"vulnerabilities":28,"developer":29,"crawl_stats":25,"alternatives":35,"analysis":134,"fingerprints":406},"pro-services-post-migrator","Pro Services Post Migrator","1.0.2","mdburnette","https:\u002F\u002Fprofiles.wordpress.org\u002Fmdburnette\u002F","\u003Cp>Pro Services Post Migrator helps teams move post content between WordPress sites without the usual migration friction.\u003C\u002Fp>\n\u003Cp>Choose the workflow that fits your project:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Export\u002FImport package workflow for controlled handoffs between environments.\u003C\u002Fli>\n\u003Cli>Direct site-to-site workflow over WordPress REST API using a secure connection key.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Built for reliability in real migrations:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Batch processing for better performance on large content sets.\u003C\u002Fli>\n\u003Cli>Re-runnable imports with mapping tables to skip already migrated posts and media.\u003C\u002Fli>\n\u003Cli>Referenced media migration with URL and ID rewrites in post content and meta.\u003C\u002Fli>\n\u003Cli>Taxonomy migration for categories, tags, and custom taxonomies (with omit controls).\u003C\u002Fli>\n\u003Cli>Missing author handling with saved assignment\u002Fcreate preferences.\u003C\u002Fli>\n\u003Cli>Detailed migration logs for troubleshooting and reporting.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Scope notes:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Migrates the built-in \u003Ccode>post\u003C\u002Fcode> post type.\u003C\u002Fli>\n\u003Cli>Supports post statuses: \u003Ccode>publish\u003C\u002Fcode>, \u003Ccode>future\u003C\u002Fcode>, \u003Ccode>draft\u003C\u002Fcode>, \u003Ccode>pending\u003C\u002Fcode>, \u003Ccode>private\u003C\u002Fcode>, \u003Ccode>trash\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Designed for single-site WordPress installs (multisite is not supported).\u003C\u002Fli>\n\u003C\u002Ful>\n","Move WordPress posts between sites faster with reliable ZIP or direct REST migrations, smart author mapping, and built-in media + taxonomy support.",0,75,"2026-04-02T15:47:00.000Z","7.0","6.2","8.0",[18,19,20,21],"media","migration","posts","proserv","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpro-services-post-migrator.1.0.2.zip",100,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":30,"total_installs":31,"avg_security_score":24,"avg_patch_time_days":32,"trust_score":33,"computed_at":34},7,2120,30,94,"2026-05-20T09:02:59.876Z",[36,55,75,97,117],{"slug":37,"name":38,"version":39,"author":40,"author_profile":41,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":11,"num_ratings":11,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":22,"tags":49,"homepage":52,"download_link":53,"security_score":24,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":54},"sm-easy-post-migrator","SM Easy Post Migrator","1.1.3","steviemathew","https:\u002F\u002Fprofiles.wordpress.org\u002Fsteviemathew\u002F","\u003Cp>SM Easy Post Migrator helps you move your WordPress content from one site to another. Use it to migrate posts, pages, images, and other media files between WordPress sites without losing your content or breaking links.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What You Can Do:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Migrate Posts and Pages:\u003C\u002Fstrong> Copy your blog posts, pages, and content from your old site to your new site. All your text, formatting, and content structure is preserved.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Move Images and Media:\u003C\u002Fstrong> Automatically download and import all images, videos, and media files from your source site. The plugin checks for duplicates so you don’t end up with multiple copies of the same file.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Fix Internal Links:\u003C\u002Fstrong> When you move content, all the links between your posts and pages are automatically updated to work on your new site. No broken links!\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Choose What to Migrate:\u003C\u002Fstrong> Browse your source site and pick exactly which posts, pages, or media files you want to move. You’re in control.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Track Your Progress:\u003C\u002Fstrong> See detailed logs of what was migrated, what succeeded, and what had issues. Export these logs to CSV if you need to review them later.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Easy to Use:\u003C\u002Fstrong> Connect to your source site using your WordPress username and application password, then select what you want to migrate. The plugin handles the rest.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Perfect for moving your blog to a new domain, consolidating multiple sites, or backing up your content to a new location.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under the GPL v2 or later.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support, feature requests, or bug reports, visit \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fsm-easy-post-migrator\u002F\" rel=\"ugc\">https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fsm-easy-post-migrator\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Contributors & Developers\u003C\u002Fh3>\n\u003Cp>“SM Easy Post Migrator” is open source software. The following people have contributed to this plugin.\u003C\u002Fp>\n","Migrate posts, pages, media, and internal links between WordPress sites without breaking links or losing images.",10,224,"2025-11-13T16:53:00.000Z","6.8.5","5.0",[50,18,19,51,20],"import","pages","https:\u002F\u002Fstevenmathew.dev\u002Fcontent-migration-pro","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsm-easy-post-migrator.1.1.3.zip","2026-03-15T15:16:48.613Z",{"slug":56,"name":57,"version":58,"author":59,"author_profile":60,"description":61,"short_description":62,"active_installs":63,"downloaded":64,"rating":24,"num_ratings":65,"last_updated":66,"tested_up_to":14,"requires_at_least":67,"requires_php":16,"tags":68,"homepage":71,"download_link":72,"security_score":24,"vuln_count":73,"unpatched_count":11,"last_vuln_date":74,"fetched_at":26},"bulk-datetime-change","Bulk Datetime Change","1.18","Katsushi Kawamori","https:\u002F\u002Fprofiles.wordpress.org\u002Fkatsushi-kawamori\u002F","\u003Cp>Bulk change date\u002Ftime for posts.\u003C\u002Fp>\n\u003Ch4>Changeable\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Posts.\u003C\u002Fli>\n\u003Cli>Pages.\u003C\u002Fli>\n\u003Cli>Medias.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Picker for date\u002Ftime\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Work with \u003Ca href=\"http:\u002F\u002Fxdsoft.net\u002Fjqplugins\u002Fdatetimepicker\u002F\" rel=\"nofollow ugc\">DateTimePicker\u003C\u002Fa>. jQuery plugin select date\u002Ftime.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Logs\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Displays the last 100 logs.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How it works\u003C\u002Fh4>\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\u002Ft6ZX51qVQ0c?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","Bulk change date\u002Ftime for posts.",7000,54371,8,"2026-03-17T01:13:00.000Z","4.6",[69,18,51,20,70],"date","time","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbulk-datetime-change\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbulk-datetime-change.1.18.zip",1,"2021-10-26 00:00:00",{"slug":76,"name":77,"version":78,"author":79,"author_profile":80,"description":81,"short_description":82,"active_installs":83,"downloaded":84,"rating":85,"num_ratings":86,"last_updated":87,"tested_up_to":88,"requires_at_least":89,"requires_php":90,"tags":91,"homepage":94,"download_link":95,"security_score":96,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":26},"find-posts-using-attachment","Find Posts Using Attachment","1.0","Sergey Biryukov","https:\u002F\u002Fprofiles.wordpress.org\u002Fsergeybiryukov\u002F","\u003Cp>Allows to find all posts where a particular attachment (image, video, etc.) is used.\u003C\u002Fp>\n\u003Cp>Adds a “Used In” column to the list view in Media Library, as well as to the attachment details modal.\u003C\u002Fp>\n\u003Cp>Finds posts that use the image (including any of its intermediate sizes) in post content, or as a featured image. Works with custom post types too.\u003C\u002Fp>\n\u003Cp>Inspired by a \u003Ca href=\"http:\u002F\u002Fwptavern.com\u002Fthe-problem-with-image-attachments-in-wordpress\" rel=\"nofollow ugc\">WP Tavern post\u003C\u002Fa> on image attachments.\u003C\u002Fp>\n","Allows to find all posts where a particular attachment is used.",1000,12732,88,27,"2021-06-01T20:21:00.000Z","5.8.13","3.5","5.2.4",[92,93,18,20],"attachment","image","http:\u002F\u002Fwptavern.com\u002Fthe-problem-with-image-attachments-in-wordpress","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ffind-posts-using-attachment.1.0.zip",85,{"slug":98,"name":99,"version":100,"author":101,"author_profile":102,"description":103,"short_description":104,"active_installs":83,"downloaded":105,"rating":11,"num_ratings":11,"last_updated":106,"tested_up_to":107,"requires_at_least":108,"requires_php":14,"tags":109,"homepage":115,"download_link":116,"security_score":96,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":26},"widget-box-lite","Widget Box Lite","1.0.0","Romik84","https:\u002F\u002Fprofiles.wordpress.org\u002Fromik84\u002F","\u003Cp>The \u003Ca href=\"https:\u002F\u002Ftheme4press.com\u002Fwidget-box\u002F\" rel=\"nofollow ugc\">Widget Box Lite\u003C\u002Fa> plugin comes with a great bunch of widgets designed especially for \u003Ca href=\"https:\u002F\u002Ftheme4press.com\u002F\" rel=\"nofollow ugc\">Theme4Press\u003C\u002Fa> themes users to utilize their websites with extra features. The plugin has now included the following widgets:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fposts-slider-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Posts Slider\u003C\u002Fstrong>\u003C\u002Fa> – display posts of your choice in any widget area, set its speed, posts categories, and much more\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Frecent-posts-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Recent Posts\u003C\u002Fstrong>\u003C\u002Fa> – with this widget you can display posts from any category, set their titles and excerpts, and other options\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fsocial-media-links-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Social Media Links\u003C\u002Fstrong>\u003C\u002Fa> – if you need to add your social media links, use this widget to show Facebook, Twitter links, and more\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fbanner-ads-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Banner Ads\u003C\u002Fstrong>\u003C\u002Fa> – upload an image banner and display it instantly with few options in the widget area\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fcontact-info-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Contact Info\u003C\u002Fstrong>\u003C\u002Fa> – contact info widget lets you display your address, phone, fax, or an email address\u003C\u002Fp>\n\u003Ch3>Premium Version Features\u003C\u002Fh3>\n\u003Ch4>The premium version of this plugin add even more settings to the existing free widgets and bring some extra new ones to add a lot of great features. It unlocks the following features:\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Posts Slider\u003C\u002Fstrong> – you can select up to 4 items per slide (multi-item slide), 30 posts per widget, change the display order, select multiple post categories, include only sticky posts, hide post titles, hide post meta, customize the post excerpts and more links, custom image sizes, 3 slider content layouts, link slides to the posts, modify the font size of titles and contents, options to set arrows, indicators and animation style\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Recent Posts\u003C\u002Fstrong> – set up to 3 columns of posts, 30 posts per widget, change the display order, select multiple post categories, include only sticky posts, hide post titles, hide post meta, customize the post excerpts and more links, custom image sizes, up to 4 post layouts, enable thumbnail shadow and animation effects, borders, and colors, modify the font size of titles and contents, enable border-radius and boxed style of the posts\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Social Media Links\u003C\u002Fstrong> – up to 25 social media links + 5 custom ones (Font Awesome icons), change the position of the tooltip, icons boxed styles and custom colors, extra media links – Google+, Dribbble, LinkedIn, Blogger, Tumblr, Reddit, Yahoo!, DeviantArt, Vimeo, YouTube, Pinterest, Digg, Flickr, Forrst, Myspace, Skype, Instagram, VK, PayPal, Dropbox, SoundCloud\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Banner Ads\u003C\u002Fstrong> – you can add up to 10 banners per widget, up to 5 columns layout (great for smaller banner sizes), select display order – default or random (unique banner rotating), banner spacing, enable tooltip to display the banner titles, shadow and hover animation effects, border and rounded styles\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Contact Info\u003C\u002Fstrong> – enable\u002Fdisable the item labels, set the font size, enable\u002Fdisable the item icons, icons background color, and rounded style, extra items – mobile number and website\u003C\u002Fp>\n\u003Ch3>Extra Premium Widgets\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fcontact-form-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Contact Form\u003C\u002Fstrong>\u003C\u002Fa> – an ajax contact form which will let visitors of your website contact you quickly and simply, protected with the Google reCAPTCHA verification, available fields – company name, name, email, phone, address, subject, message\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Ffacebook-page-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Facebook Page\u003C\u002Fstrong>\u003C\u002Fa> – the Facebook Page widget shows your fan page with many useful options like custom width and height, custom tabs – timeline, messages, and events, you can select header size, show or hide friend’s faces, hide cover photo, add your APP ID for statistics\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fflickr-photos-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Flickr Photos\u003C\u002Fstrong>\u003C\u002Fa> – show your Flickr photostream, add your Flickr ID, API key, you can set image sizes, spacing, number of photos (up to 30 per widget) and columns (up to 5), enable tooltips, borders, hover and shadow effects, rounded image styles\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fgoogle-map-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Google Map\u003C\u002Fstrong>\u003C\u002Fa> – the Google Map widget will help you to display a location, for example of your office. Many settings are available, like adding multiple addresses, setting the size of the map, map types, zoom level, enabling\u002Fdisabling the map pin, controls, and tooltip\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Finstagram-photos-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Instagram Photos\u003C\u002Fstrong>\u003C\u002Fa> – display any photos of Instagram, all it’s up to you. Many predefined styles, effects, you can add up to 30 photos per widget, up to 5 columns layout, photo spacing, custom photo sizes, enable tooltip to display the photo titles, shadow and hover animation effects, border and rounded styles\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Fportfolio-catalog-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Portfolio Catalog\u003C\u002Fstrong>\u003C\u002Fa> – your portfolio work can be shown in the widget area with a clean minimal layout. You can add up to 30 items per widget, up to 5 columns layout, image spacing, custom image sizes, enable tooltip, shadow and hover animation effects, border and rounded styles\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fdemo.theme4press.com\u002Fwidget-box\u002Ftwitter-tweets-widget\u002F\" rel=\"nofollow ugc\">\u003Cstrong>Twitter Tweets\u003C\u002Fstrong>\u003C\u002Fa> – recent tweets can be automatically shown on any predefined widget area on your page. This widget lets you add your Twitter username, API Keys, up to 30 tweets per widget, display your image, enable border or light background style\u003C\u002Fp>\n","A toolbox of great widgets for your daily blogging. Display recent posts, social links, and much more. Designed for Theme4Press themes",14354,"2023-08-12T09:04:00.000Z","6.3.8","4.7",[110,111,112,113,114],"posts-slider","recent-posts","social-media-links","theme4press","widgets","https:\u002F\u002Ftheme4press.com\u002Fwidget-box\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwidget-box-lite.zip",{"slug":118,"name":119,"version":120,"author":121,"author_profile":122,"description":123,"short_description":124,"active_installs":125,"downloaded":126,"rating":24,"num_ratings":73,"last_updated":127,"tested_up_to":128,"requires_at_least":129,"requires_php":22,"tags":130,"homepage":22,"download_link":133,"security_score":24,"vuln_count":11,"unpatched_count":11,"last_vuln_date":25,"fetched_at":26},"calliope-media-import-export","Export\u002FImport Media","1.6.4","Maira Foresto","https:\u002F\u002Fprofiles.wordpress.org\u002Fmairaforesto\u002F","\u003Cp>\u003Cstrong>Export\u002FImport Media\u003C\u002Fstrong> helps you move media between WordPress sites using CSV while keeping core media metadata such as alt text, title, caption, and description.\u003C\u002Fp>\n\u003Cp>The plugin generates a CSV file containing useful media information such as URLs, relative paths, alt text, titles, captions, and descriptions. You can then validate that CSV, preview it, and import it in batches.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why use this plugin?\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Batch import:\u003C\u002Fstrong> AJAX-powered processing helps avoid browser and timeout issues on medium and large imports.\u003Cbr \u002F>\n* \u003Cstrong>Metadata aware:\u003C\u002Fstrong> Supports title, alt text, caption, and description columns.\u003Cbr \u002F>\n* \u003Cstrong>Developer friendly:\u003C\u002Fstrong> Includes hooks and filters for extending CSV columns, validation, admin UI, and import\u002Fexport behavior.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>CSV Export:\u003C\u002Fstrong> Export media data to CSV with filters by date, media type, and attachment context.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CSV Preview:\u003C\u002Fstrong> Validate and preview the file before importing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Batch Processing:\u003C\u002Fstrong> Import media rows in AJAX batches.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Local Import Mode:\u003C\u002Fstrong> Register files that already exist in \u003Ccode>\u002Fuploads\u002F\u003C\u002Fcode> without downloading them again.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Honor Relative Path:\u003C\u002Fstrong> Reuse or preserve folder paths from the CSV.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Skip Thumbnail Generation:\u003C\u002Fstrong> Speed up large imports when needed.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Duplicate Prevention:\u003C\u002Fstrong> Uses source meta and file fingerprints to avoid importing the same media twice.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Downloadable Log:\u003C\u002Fstrong> Save an import log as \u003Ccode>.txt\u003C\u002Fcode> after the process finishes.\u003C\u002Fli>\n\u003C\u002Ful>\n","Import and export your WordPress media library using CSV, with preview, batch processing, duplicate prevention, and support for media metadata.",900,4164,"2026-04-07T21:09:00.000Z","6.9.4","5.6",[131,132,50,18,19],"csv","export","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcalliope-media-import-export.1.6.4.zip",{"attackSurface":135,"codeSignals":204,"taintFlows":223,"riskAssessment":398,"analyzedAt":405},{"hooks":136,"ajaxHandlers":159,"restRoutes":201,"shortcodes":202,"cronEvents":203,"entryPointCount":44,"unprotectedCount":44},[137,143,147,151,155],{"type":138,"name":139,"callback":140,"file":141,"line":142},"action","init","pspm_ensure_source_site_identifier","pro-services-post-migrator.php",34,{"type":138,"name":144,"callback":145,"file":141,"line":146},"rest_api_init","pspm_register_rest_routes",35,{"type":138,"name":148,"callback":149,"file":141,"line":150},"admin_menu","pspm_register_admin_menu",36,{"type":138,"name":152,"callback":153,"file":141,"line":154},"admin_enqueue_scripts","pspm_enqueue_admin_assets",37,{"type":138,"name":156,"callback":157,"file":141,"line":158},"admin_init","pspm_maybe_download_export_file",38,[160,165,169,173,177,181,185,189,193,197],{"action":161,"nopriv":162,"callback":163,"hasNonce":162,"hasCapCheck":162,"file":141,"line":164},"pspm_generate_connection_key",false,"pspm_ajax_generate_connection_key",40,{"action":166,"nopriv":162,"callback":167,"hasNonce":162,"hasCapCheck":162,"file":141,"line":168},"pspm_run_preflight","pspm_ajax_run_preflight",41,{"action":170,"nopriv":162,"callback":171,"hasNonce":162,"hasCapCheck":162,"file":141,"line":172},"pspm_start_export","pspm_ajax_start_export",42,{"action":174,"nopriv":162,"callback":175,"hasNonce":162,"hasCapCheck":162,"file":141,"line":176},"pspm_process_export","pspm_ajax_process_export",43,{"action":178,"nopriv":162,"callback":179,"hasNonce":162,"hasCapCheck":162,"file":141,"line":180},"pspm_finalize_export","pspm_ajax_finalize_export",44,{"action":182,"nopriv":162,"callback":183,"hasNonce":162,"hasCapCheck":162,"file":141,"line":184},"pspm_upload_import_package","pspm_ajax_upload_import_package",46,{"action":186,"nopriv":162,"callback":187,"hasNonce":162,"hasCapCheck":162,"file":141,"line":188},"pspm_start_direct_import","pspm_ajax_start_direct_import",47,{"action":190,"nopriv":162,"callback":191,"hasNonce":162,"hasCapCheck":162,"file":141,"line":192},"pspm_save_author_choices","pspm_ajax_save_author_choices",48,{"action":194,"nopriv":162,"callback":195,"hasNonce":162,"hasCapCheck":162,"file":141,"line":196},"pspm_process_import","pspm_ajax_process_import",49,{"action":198,"nopriv":162,"callback":199,"hasNonce":162,"hasCapCheck":162,"file":141,"line":200},"pspm_get_run_logs","pspm_ajax_get_run_logs",50,[],[],[],{"dangerousFunctions":205,"sqlUsage":206,"outputEscaping":209,"fileOperations":220,"externalRequests":211,"nonceChecks":221,"capabilityChecks":44,"bundledLibraries":222},[],{"prepared":207,"raw":11,"locations":208},20,[],{"escaped":210,"rawEcho":211,"locations":212},115,2,[213,217],{"file":214,"line":215,"context":216},"includes\u002Fhelpers.php",1052,"raw output",{"file":218,"line":219,"context":216},"includes\u002Frest.php",192,6,12,[],[224,258,288,302,310,320,331,342,353,364,379],{"entryPoint":225,"graph":226,"unsanitizedCount":211,"severity":257},"pspm_maybe_download_export_file (includes\u002Fexport.php:279)",{"nodes":227,"edges":252},[228,234,238,243,245,247],{"id":229,"type":230,"label":231,"file":232,"line":233},"n0","source","$_GET","includes\u002Fexport.php",307,{"id":235,"type":236,"label":237,"file":232,"line":233},"n1","transform","→ pspm_stream_file_to_browser()",{"id":239,"type":240,"label":241,"file":214,"line":215,"wp_function":242},"n2","sink","echo() [XSS]","echo",{"id":244,"type":230,"label":231,"file":232,"line":233},"n3",{"id":246,"type":236,"label":237,"file":232,"line":233},"n4",{"id":248,"type":240,"label":249,"file":214,"line":250,"wp_function":251},"n5","header() [Header Injection]",1049,"header",[253,254,255,256],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},{"from":244,"to":246,"sanitized":162},{"from":246,"to":248,"sanitized":162},"medium",{"entryPoint":259,"graph":260,"unsanitizedCount":287,"severity":257},"\u003Cexport> (includes\u002Fexport.php:0)",{"nodes":261,"edges":280},[262,265,267,271,272,273,274,276,278],{"id":229,"type":230,"label":263,"file":232,"line":264},"$_POST (x2)",173,{"id":235,"type":236,"label":266,"file":232,"line":264},"→ pspm_save_session()",{"id":239,"type":240,"label":268,"file":214,"line":269,"wp_function":270},"update_option() [Settings Manipulation]",70,"update_option",{"id":244,"type":230,"label":231,"file":232,"line":233},{"id":246,"type":236,"label":237,"file":232,"line":233},{"id":248,"type":240,"label":241,"file":214,"line":215,"wp_function":242},{"id":275,"type":230,"label":231,"file":232,"line":233},"n6",{"id":277,"type":236,"label":237,"file":232,"line":233},"n7",{"id":279,"type":240,"label":249,"file":214,"line":250,"wp_function":251},"n8",[281,282,283,284,285,286],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},{"from":244,"to":246,"sanitized":162},{"from":246,"to":248,"sanitized":162},{"from":275,"to":277,"sanitized":162},{"from":277,"to":279,"sanitized":162},4,{"entryPoint":289,"graph":290,"unsanitizedCount":11,"severity":301},"pspm_update_site_icon_from_request (includes\u002Fadmin.php:296)",{"nodes":291,"edges":298},[292,296],{"id":229,"type":230,"label":293,"file":294,"line":295},"$_POST","includes\u002Fadmin.php",304,{"id":235,"type":240,"label":268,"file":294,"line":297,"wp_function":270},324,[299],{"from":229,"to":235,"sanitized":300},true,"low",{"entryPoint":303,"graph":304,"unsanitizedCount":11,"severity":301},"\u003Cadmin> (includes\u002Fadmin.php:0)",{"nodes":305,"edges":308},[306,307],{"id":229,"type":230,"label":293,"file":294,"line":295},{"id":235,"type":240,"label":268,"file":294,"line":297,"wp_function":270},[309],{"from":229,"to":235,"sanitized":300},{"entryPoint":311,"graph":312,"unsanitizedCount":73,"severity":301},"pspm_ajax_process_export (includes\u002Fexport.php:107)",{"nodes":313,"edges":317},[314,315,316],{"id":229,"type":230,"label":293,"file":232,"line":264},{"id":235,"type":236,"label":266,"file":232,"line":264},{"id":239,"type":240,"label":268,"file":214,"line":269,"wp_function":270},[318,319],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},{"entryPoint":321,"graph":322,"unsanitizedCount":73,"severity":301},"pspm_ajax_finalize_export (includes\u002Fexport.php:208)",{"nodes":323,"edges":328},[324,326,327],{"id":229,"type":230,"label":293,"file":232,"line":325},269,{"id":235,"type":236,"label":266,"file":232,"line":325},{"id":239,"type":240,"label":268,"file":214,"line":269,"wp_function":270},[329,330],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},{"entryPoint":332,"graph":333,"unsanitizedCount":11,"severity":301},"pspm_ajax_start_direct_import (includes\u002Fimport.php:207)",{"nodes":334,"edges":340},[335,338],{"id":229,"type":230,"label":263,"file":336,"line":337},"includes\u002Fimport.php",216,{"id":235,"type":240,"label":268,"file":336,"line":339,"wp_function":270},279,[341],{"from":229,"to":235,"sanitized":300},{"entryPoint":343,"graph":344,"unsanitizedCount":73,"severity":301},"pspm_ajax_save_author_choices (includes\u002Fimport.php:292)",{"nodes":345,"edges":350},[346,348,349],{"id":229,"type":230,"label":293,"file":336,"line":347},336,{"id":235,"type":236,"label":266,"file":336,"line":347},{"id":239,"type":240,"label":268,"file":214,"line":269,"wp_function":270},[351,352],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},{"entryPoint":354,"graph":355,"unsanitizedCount":211,"severity":301},"pspm_ajax_process_import (includes\u002Fimport.php:793)",{"nodes":356,"edges":361},[357,359,360],{"id":229,"type":230,"label":263,"file":336,"line":358},832,{"id":235,"type":236,"label":266,"file":336,"line":358},{"id":239,"type":240,"label":268,"file":214,"line":269,"wp_function":270},[362,363],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},{"entryPoint":365,"graph":366,"unsanitizedCount":73,"severity":378},"pspm_ajax_get_run_logs (includes\u002Fimport.php:882)",{"nodes":367,"edges":375},[368,370,372],{"id":229,"type":230,"label":293,"file":336,"line":369},892,{"id":235,"type":236,"label":371,"file":336,"line":369},"→ pspm_get_logs_for_run()",{"id":239,"type":240,"label":373,"file":214,"line":210,"wp_function":374},"get_results() [SQLi]","get_results",[376,377],{"from":229,"to":235,"sanitized":162},{"from":235,"to":239,"sanitized":162},"high",{"entryPoint":380,"graph":381,"unsanitizedCount":287,"severity":378},"\u003Cimport> (includes\u002Fimport.php:0)",{"nodes":382,"edges":392},[383,384,385,387,388,389,390,391],{"id":229,"type":230,"label":263,"file":336,"line":337},{"id":235,"type":240,"label":268,"file":336,"line":339,"wp_function":270},{"id":239,"type":230,"label":386,"file":336,"line":347},"$_POST (x3)",{"id":244,"type":236,"label":266,"file":336,"line":347},{"id":246,"type":240,"label":268,"file":214,"line":269,"wp_function":270},{"id":248,"type":230,"label":293,"file":336,"line":369},{"id":275,"type":236,"label":371,"file":336,"line":369},{"id":277,"type":240,"label":373,"file":214,"line":210,"wp_function":374},[393,394,395,396,397],{"from":229,"to":235,"sanitized":300},{"from":239,"to":244,"sanitized":162},{"from":244,"to":246,"sanitized":162},{"from":248,"to":275,"sanitized":162},{"from":275,"to":277,"sanitized":162},{"summary":399,"deductions":400},"The 'pro-services-post-migrator' v1.0.2 plugin exhibits a concerning security posture primarily due to its extensive unprotected AJAX endpoints. While the plugin demonstrates good practices in other areas, such as using prepared statements for all SQL queries and a high percentage of properly escaped output, the lack of authentication and capability checks on all 10 AJAX handlers represents a significant attack surface.  The taint analysis reveals two high-severity flows with unsanitized paths, indicating potential for injection-style vulnerabilities if these flows are reachable without proper sanitization within the AJAX handlers.  The absence of any known historical vulnerabilities could suggest either a lack of past scrutiny or a history of good security practices in previous versions. However, the current static analysis findings, particularly the unprotected AJAX endpoints combined with high-severity taint flows, present a clear and present risk that requires immediate attention.",[401,403],{"reason":402,"points":44},"Unprotected AJAX handlers",{"reason":404,"points":221},"High severity taint flows","2026-04-16T13:59:12.164Z",{"wat":407,"direct":416},{"assetPaths":408,"generatorPatterns":410,"scriptPaths":411,"versionParams":413},[409],"\u002Fwp-content\u002Fplugins\u002Fpro-services-post-migrator\u002Fassets\u002Fadmin.css",[],[412],"\u002Fwp-content\u002Fplugins\u002Fpro-services-post-migrator\u002Fassets\u002Fadmin.js",[414,415],"pro-services-post-migrator\u002Fassets\u002Fadmin.css?ver=","pro-services-post-migrator\u002Fassets\u002Fadmin.js?ver=",{"cssClasses":417,"htmlComments":428,"htmlAttributes":429,"restEndpoints":438,"jsGlobals":440,"shortcodeOutput":442},[418,419,420,421,422,423,424,425,426,427],"pspm-card","pspm-results","pspm-wrap","pspm-tool-grid","pspm-tool-card","pspm-tool-card-header","pspm-tool-status","pspm-tool-status-live","pspm-tool-metric","pspm-tool-metric-label",[],[430,431,432,433,434,435,436,437],"id=\"pspm-run-preflight\"","id=\"pspm-preflight-results\"","id=\"pro-services-tools\"","id=\"pro-services-post-migrator-source\"","id=\"pro-services-post-migrator-destination\"","id=\"pro-services-alt-tag-auditor\"","id=\"pro-services-image-auditor\"","id=\"pro-services-favicon-checker\"",[439],"\u002Fwp-json\u002Fpro-services-post-migrator\u002Fv1",[441],"PSPMAdmin",[],{"error":300,"url":444,"statusCode":445,"statusMessage":446,"message":446},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fpro-services-post-migrator\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":73,"versions":448},[449],{"version":6,"download_url":23,"svn_tag_url":450,"released_at":25,"has_diff":162,"diff_files_changed":451,"diff_lines":25,"trac_diff_url":25,"vulnerabilities":452,"is_current":300},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fpro-services-post-migrator\u002Ftags\u002F1.0.2\u002F",[],[]]