[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fxC_-aHg48lKxtMNiyA3fRg9EPaECvZs86PMgk-NJKIU":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":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":14,"tags":17,"homepage":14,"download_link":23,"security_score":24,"vuln_count":13,"unpatched_count":13,"last_vuln_date":25,"fetched_at":26,"vulnerabilities":27,"developer":28,"crawl_stats":25,"alternatives":33,"analysis":137,"fingerprints":200},"custom-url-mapper","Custom URL Mapper","1.0","freeliancenow","https:\u002F\u002Fprofiles.wordpress.org\u002Ffreeliancenow\u002F","\u003Cp>Custom URL Mapper, created and maintained by Michael Kiamanesh and Grigor Nikolov, is a totally free plugin that allows you to easily create custom URLs on your WordPress site and map them to specific posts or pages. Whether you need to create short, clean, or personalized URLs for a better user experience, this plugin makes it simple to redirect any custom URL to existing content on your site. No coding required—just add your custom URL, select the target post or page, and you’re set!\u003C\u002Fp>\n\u003Cp>We built this plugin out of necessity as a way to manage redirects on our own websites without the headache of coding or overcomplicated tools. We’re sharing it for free, hoping it will help others facing similar challenges.\u003C\u002Fp>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Cp>Adding a custom URL is simple and straightforward. Here’s a step-by-step guide:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Enter a Custom Query\u003C\u002Fstrong>: In the Custom Query field, type the word or phrase you want to use in the URL. For example, let’s say your website has a page called “Contact” with the URL \u003Ccode>yourwebsite.com\u002Fcontact\u003C\u002Fcode>. You can enter a word like “test” into the Custom Query field.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Select the Target Post\u002FPage\u003C\u002Fstrong>: From the Associated Post\u002FPage dropdown menu, select the page or post where you want the custom URL to redirect. In this case, you would choose your “Contact” page.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Save and Test\u003C\u002Fstrong>: After saving, whenever someone types \u003Ccode>yourwebsite.com\u002Ftest\u003C\u002Fcode> into their browser, they will automatically be redirected to your “Contact” page. You can create as many custom queries and redirects as you need for any posts or pages on your site.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Completely Free: No hidden costs or premium versions.\u003C\u002Fli>\n\u003Cli>Unlimited Custom URLs: Create as many custom URLs as you need and map them to any post or page.\u003C\u002Fli>\n\u003Cli>Seamless Integration: Works flawlessly with WordPress’s native permalink structure.\u003C\u002Fli>\n\u003Cli>SEO-Friendly Redirects: Automatically handles URL redirects with a 301 (permanent) redirect to maintain SEO integrity.\u003C\u002Fli>\n\u003Cli>Easy-to-use Admin Interface: For adding and managing your custom URLs.\u003C\u002Fli>\n\u003Cli>Secure and Lightweight: No impact on website performance.\u003C\u002Fli>\n\u003Cli>No Technical Knowledge Required: Set up your redirects with simple point-and-click actions.\u003C\u002Fli>\n\u003C\u002Ful>\n","Create custom URLs and redirect them to any post or page on your WordPress site.",10,700,0,"","6.6.5","5.0",[18,19,20,21,22],"custom-urls","permalink","redirect","url","url-mapping","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-url-mapper.1.0.zip",100,null,"2026-03-15T10:48:56.248Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":29,"total_installs":11,"avg_security_score":24,"avg_patch_time_days":30,"trust_score":31,"computed_at":32},1,30,94,"2026-04-04T17:03:56.386Z",[34,59,79,98,118],{"slug":35,"name":36,"version":37,"author":38,"author_profile":39,"description":40,"short_description":41,"active_installs":42,"downloaded":43,"rating":44,"num_ratings":45,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":53,"download_link":54,"security_score":55,"vuln_count":56,"unpatched_count":13,"last_vuln_date":57,"fetched_at":58},"custom-permalinks","Custom Permalinks","3.1.2","Sami Ahmed Siddiqui","https:\u002F\u002Fprofiles.wordpress.org\u002Fsasiddiqui\u002F","\u003Cp>You want to take control of your WordPress site’s URLs? The \u003Cstrong>Custom Permalinks\u003C\u002Fstrong> plugin gives you the power to set unique, custom URLs for any post, page, tag, or category. This means you can design your site’s structure exactly how you envision it, rather than being limited by WordPress’s default settings. When you set a custom permalink, the original post URL will be automatically redirected to your new, customized URL.\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Individual Permalink Control\u003C\u002Fstrong>: Assign unique URLs to any post, page, tag, or category.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Site Structure Control\u003C\u002Fstrong>: Gain ultimate control over how your site’s URLs are organized.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Post Type Permalink Structures (v3.0.0+)\u003C\u002Fstrong>: Define custom permalink structures for each public Post Type using predefined tags, automatically generating URLs upon content creation. You can still manually edit any permalink. If left empty, default settings will apply.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Getting Started: Plugin Settings\u003C\u002Fh3>\n\u003Cp>You can configure Custom Permalinks by navigating to \u003Cstrong>Settings > Custom Permalinks\u003C\u002Fstrong> in your WordPress Dashboard.\u003C\u002Fp>\n\u003Ch3>Available Tags for Permalink Structures\u003C\u002Fh3>\n\u003Cp>When setting up your custom permalink structures, you can use a variety of tags that will dynamically populate the URL. Here’s a breakdown of what’s available:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>%year%\u003C\u002Fstrong>: The year of the post in four digits, eg: 2025\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%monthnum%\u003C\u002Fstrong>: Month the post was published, in two digits, eg: 01\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%day%\u003C\u002Fstrong>: Day the post was published in two digits, eg: 02\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%hour%\u003C\u002Fstrong>: Hour of the day, the post was published, eg: 15\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%minute%\u003C\u002Fstrong>: Minute of the hour, the post was published, eg: 43\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%second%\u003C\u002Fstrong>: Second of the minute, the post was published, eg: 33\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%post_id%\u003C\u002Fstrong>: The unique ID of the post, eg: 123\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%category%\u003C\u002Fstrong>: A clean version of the category name (its slug). Nested sub-categories will appear as nested directories in the URL..\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%author%\u003C\u002Fstrong>: A sanitized version of the post author’s name.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%postname%\u003C\u002Fstrong>: A clean version of the post or page title (its slug). For example, “This Is A Great Post!” becomes \u003Ccode>this-is-a-great-post\u003C\u002Fcode> in the URL.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%parent_postname%\u003C\u002Fstrong>: Similar to \u003Ccode>%postname%\u003C\u002Fcode>, but uses the immediate parent page’s slug if a parent is selected.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%parents_postnames%\u003C\u002Fstrong>: Similar to \u003Ccode>%postname%\u003C\u002Fcode>, but includes all parent page slugs if parents are selected.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%title%\u003C\u002Fstrong>: The title of the post, converted to a slug. For example, “This Is A Great Post!” becomes \u003Ccode>this-is-a-great-post\u003C\u002Fcode>. Unlike \u003Ccode>%postname%\u003C\u002Fcode> which is set once, \u003Ccode>%title%\u003C\u002Fcode> automatically updates in the permalink if the post title changes (unless the post is published or the permalink is manually edited).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%ctax_TAXONOMY_NAME%\u003C\u002Fstrong>: A clean version of a custom taxonomy’s name. Replace \u003Ccode>TAXONOMY_NAME\u003C\u002Fcode> with the actual taxonomy name. You can also provide a default slug for when no category\u002Ftaxonomy is selected by using \u003Ccode>??\u003C\u002Fcode> (e.g., \u003Ccode>%ctax_type??sales%\u003C\u002Fcode> will use “sales” as a default).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%ctax_parent_TAXONOMY_NAME%\u003C\u002Fstrong>: Similar to \u003Ccode>%ctax_TAXONOMY_NAME%\u003C\u002Fcode>, but includes the immediate parent category\u002Ftag slug in the URL if a parent is selected.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%ctax_parents_TAXONOMY_NAME%\u003C\u002Fstrong>: Similar to \u003Ccode>%ctax_TAXONOMY_NAME%\u003C\u002Fcode>, but includes all parent category\u002Ftag slugs in the URL if parents are selected.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>%custom_permalinks_TAG_NAME%\u003C\u002Fstrong>: Developers have the flexibility to define their own custom tags(replace \u003Ccode>_TAG_NAME\u003C\u002Fcode> with your desired name). To ensure these tags resolve to the correct permalinks, simply apply the \u003Ccode>custom_permalinks_post_permalink_tag\u003C\u002Fcode> filter.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Important Note:\u003C\u002Fstrong> For new posts, Custom Permalinks will keep updating the permalink while the post is in draft mode, assuming a structure is defined in the plugin settings. Once the post is published or its permalink is manually updated, the plugin will stop automatic updates for that specific post.\u003C\u002Fp>\n\u003Ch3>Custom Permalinks: Fine-Tuning with Filters\u003C\u002Fh3>\n\u003Cp>Custom Permalinks offers a range of \u003Cstrong>filters\u003C\u002Fstrong> that empower developers to precisely control its behavior. You can explore all available filters, complete with example code snippets, in our \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsamiahmedsiddiqui\u002Fcustom-permalinks\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For Assistance:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Premium Users:\u003C\u002Fstrong> If you need assistance implementing these filters, please don’t hesitate to reach out to us via our \u003Ca href=\"https:\u002F\u002Fwww.custompermalinks.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">Premium contact support\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Other Users:\u003C\u002Fstrong> You can also directly reach out to the plugin author via \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsami-ahmed-siddiqui\u002F\" rel=\"nofollow ugc\">LinkedIn\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Need Help or Found a Bug?\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Support:\u003C\u002Fstrong> For one-on-one email support, consider purchasing \u003Ca href=\"https:\u002F\u002Fwww.custompermalinks.com\u002F#pricing-section\" rel=\"nofollow ugc\">Custom Permalinks Premium\u003C\u002Fa>. While some basic support may be provided on the WordPress.org forums, email support is prioritized for premium users.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bug Reports:\u003C\u002Fstrong> If you encounter a bug, please report it on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsamiahmedsiddiqui\u002Fcustom-permalinks\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>. Make sure to provide complete information to reproduce the issue. GitHub is for bug reports, not general support questions.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If you experience any site-breaking issues after upgrading, please report them on the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fcustom-permalinks\u002F\" rel=\"ugc\">WordPress Forum\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsamiahmedsiddiqui\u002Fcustom-permalinks\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> with detailed information. You can always revert to an older version by downloading it from \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcustom-permalinks\u002Fadvanced\u002F\" rel=\"ugc\">https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcustom-permalinks\u002Fadvanced\u002F\u003C\u002Fa>.\u003C\u002Fp>\n","A powerful WordPress plugin for full URL control. Set custom permalinks, auto-redirects, and use dynamic tags for ideal site structure and SEO.",100000,2526567,82,116,"2025-10-08T12:56:00.000Z","6.8.5","2.6","7.0",[51,52,19,20,21],"address","link","https:\u002F\u002Fwww.custompermalinks.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-permalinks.3.1.2.zip",97,3,"2024-08-23 00:00:00","2026-03-15T15:16:48.613Z",{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":67,"downloaded":68,"rating":31,"num_ratings":69,"last_updated":70,"tested_up_to":71,"requires_at_least":72,"requires_php":14,"tags":73,"homepage":76,"download_link":77,"security_score":78,"vuln_count":13,"unpatched_count":13,"last_vuln_date":25,"fetched_at":58},"change-permalink-helper","Change Permalink Helper","1.1.1","Syde GmbH (formerly Inpsyde)","https:\u002F\u002Fprofiles.wordpress.org\u002Finpsyde\u002F","\u003Cp>When you change the permalink structure then this is a problem for bookmarks of users and also for search engines to link to your posts. This plugin uses the slug of the new url and search for a ID in the database of WordPress. If it finds a post according to the slug, the Plugin will redirect to the correct post and send a header message “moved permanently 301” to change the url on the index of search engines.\u003C\u002Fp>\n","It checks the Permalink and redirects to the new URL, if it doesn't exist. It sends the header message \"moved permanently 301\"",1000,30749,33,"2020-04-24T14:28:00.000Z","5.4.19","2.7",[74,19,20,75,21],"301","seo","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fchange-permalink-helper","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fchange-permalink-helper.zip",85,{"slug":80,"name":81,"version":82,"author":83,"author_profile":84,"description":85,"short_description":86,"active_installs":87,"downloaded":88,"rating":89,"num_ratings":90,"last_updated":91,"tested_up_to":92,"requires_at_least":93,"requires_php":14,"tags":94,"homepage":96,"download_link":97,"security_score":78,"vuln_count":13,"unpatched_count":13,"last_vuln_date":25,"fetched_at":58},"advanced-permalinks","Advanced Permalinks","0.1.21","John Godley","https:\u002F\u002Fprofiles.wordpress.org\u002Fjohnny5\u002F","\u003Cp>Provides advanced permalink options that allow you to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Have multiple permalink structures.  Permalinks can be assigned to posts or ranges of posts\u003C\u002Fli>\n\u003Cli>301 redirect old permalink structures (many structures are allowed)\u003C\u002Fli>\n\u003Cli>Category-specific permalinks.  Posts in certain categories can be assigned a permalink structure\u003C\u002Fli>\n\u003Cli>No need to have a base to the category permalink!\u003C\u002Fli>\n\u003Cli>Change author permalinks\u003C\u002Fli>\n\u003Cli>Enable periods in permalinks – perfect for migrating old websites\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>All permalinks are real permalinks and do not result in 301 redirections.  \u003Cem>This means you can change your permalink structure without\u003Cbr \u002F>\naffecting any existing posts and without losing any page rank.\u003C\u002Fem>  Any attempts to access posts in the wrong permalink structure will be\u003Cbr \u002F>\nautomatically redirected to the correct URL.\u003C\u002Fp>\n\u003Cp>Advanced Permalinks is available in:\u003Cbr \u002F>\n* English\u003Cbr \u002F>\n* Bulgarian (thanks to Alexander Dichev)\u003Cbr \u002F>\n* Belorussian (thanks to Marcis Gasuns)\u003Cbr \u002F>\n* Russian (thanks to Slava Mikheev)\u003Cbr \u002F>\n* Uzbekistan (thanks to Alexandra Bolshova)\u003Cbr \u002F>\n* Lithuanian (thanks to Nata Strazda at Web Hub)\u003C\u002Fp>\n\u003Ch4>Example 1: Migrating a permalink structure\u003C\u002Fh4>\n\u003Cp>Say you have an existing site with the default WordPress permalink structure \u003Ccode>\u002F%year%\u002F%monthnum%\u002F%day%\u002F%postname%\u002F\u003C\u002Fcode> and you decide you want to change it\u003Cbr \u002F>\nto a more keyword-heavy \u003Ccode>\u002F%category%\u002F%postname%\u002F\u003C\u002Fcode>.  If you change the permalink setting then all your old posts will be moved, and you will suffer a major loss\u003Cbr \u002F>\nof page rank (not to mention a lot of 404s).  With Advanced Permalinks you can define a specific permalink structure for all your old\u003Cbr \u002F>\nposts and then create a new permalink structure for new ones.  All your old posts will carry on living at the same URL as before, but all\u003Cbr \u002F>\nnew posts will be created using your new structure.\u003C\u002Fp>\n\u003Ch4>Example 2: Category-specific permalinks\u003C\u002Fh4>\n\u003Cp>Sometimes you want posts in a certain category to appear elsewhere on your site.  For example, your usual permalink structure may result in:\u003C\u002Fp>\n\u003Cp>\u002F2007\u002F05\u002F02\u002Fmy-review\u003C\u002Fp>\n\u003Cp>However, you want posts in the ‘review’ category to appear as:\u003C\u002Fp>\n\u003Cp>\u002Freviews\u002Fmy-review\u003C\u002Fp>\n\u003Cp>Using Advanced Permalinks this is not a problem.\u003C\u002Fp>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Cp>Full documentation can be found on the \u003Ca href=\"http:\u002F\u002Furbangiraffe.com\u002Fplugins\u002Fadvanced-permalinks\u002F\" rel=\"nofollow ugc\">Advanced Permalinks Page\u003C\u002Fa> page.\u003C\u002Fp>\n","Allows multiple permalink structures and category-specific permalinks without needing redirects.",400,93342,54,9,"2012-05-05T09:05:00.000Z","2.9.2","2.0",[19,95,20,75,21],"permalinks","http:\u002F\u002Furbangiraffe.com\u002Fplugins\u002Fadvanced-permalinks\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadvanced-permalinks.zip",{"slug":99,"name":100,"version":101,"author":102,"author_profile":103,"description":104,"short_description":105,"active_installs":106,"downloaded":107,"rating":24,"num_ratings":29,"last_updated":108,"tested_up_to":109,"requires_at_least":110,"requires_php":14,"tags":111,"homepage":116,"download_link":117,"security_score":24,"vuln_count":13,"unpatched_count":13,"last_vuln_date":25,"fetched_at":58},"php-to-pages","Legacy URL Suffix & SEO Preserver","2.1","Himanshu Parashar","https:\u002F\u002Fprofiles.wordpress.org\u002Funiquecodergmailcom\u002F","\u003Cp>\u003Cstrong>Don’t Let Your SEO Rank Vanish During a Migration.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Migrating a legacy website to WordPress is a massive win for your workflow, but it can be a disaster for your search engine rankings. If your old site used .php extensions (e.g., \u003Ccode>domain.com\u002Fabout-us.php\u003C\u002Fcode>), moving to standard WordPress “Clean Permalinks” will turn every one of those established links into a 404 Page Not Found error.\u003C\u002Fp>\n\u003Cp>PHP to Pages is the lightweight, “set it and forget it” solution that bridges the gap between your legacy architecture and modern WordPress flexibility.\u003C\u002Fp>\n\u003Ch3>The Value Proposition\u003C\u002Fh3>\n\u003Cblockquote>\n\u003Cp>“Seamlessly transition from legacy PHP sites to WordPress while maintaining 100% URL consistency. No complex .htaccess coding, no broken backlinks, and zero SEO drop-off.”\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>Why Choose PHP to Pages?\u003C\u002Fh3>\n\u003Cp>When you change your URL structure, you lose the “link juice” accumulated over years. This plugin ensures that your existing backlinks from social media, external blogs, and Google search results remain active and functional.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Instantly Append .php Suffix:\u003C\u002Fstrong> Automatically transforms \u003Ccode>yoursite.com\u002Fsample-page\u002F\u003C\u002Fcode> into \u003Ccode>yoursite.com\u002Fsample-page.php\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO Preservation:\u003C\u002Fstrong> Keep your indexed URLs exactly as they appear in Google Search Console to avoid the dreaded “re-indexing” phase.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zero-Configuration Setup:\u003C\u002Fstrong> No need to dive into your server’s .htaccess or Nginx config files. Just activate and your permalinks update instantly.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer Friendly:\u003C\u002Fstrong> Built with standard WordPress Rewrites API, ensuring compatibility with most well-coded themes and plugins.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lightweight Performance:\u003C\u002Fstrong> No bloat, no database-heavy queries. It simply tells WordPress how to read and display your URLs.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Who Is This For?\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Agencies & Freelancers:\u003C\u002Fstrong> Moving a long-term client from a static PHP site to WordPress.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO Specialists:\u003C\u002Fstrong> Ensuring that a site migration doesn’t result in a loss of organic traffic.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Legacy Site Owners:\u003C\u002Fstrong> Anyone who has a decade’s worth of backlinks pointing to .php files and doesn’t want to manage thousands of manual 301 redirects.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\u003Cstrong>Install & Activate:\u003C\u002Fstrong> Simply upload the plugin to your WordPress dashboard.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Permalinks Refresh:\u003C\u002Fstrong> Go to \u003Cstrong>Settings > Permalinks\u003C\u002Fstrong> and click “Save Changes” to flush your rewrite rules.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Done:\u003C\u002Fstrong> Your pages will now resolve with the .php extension.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Example\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Before:\u003C\u002Fstrong> \u003Ccode>http:\u002F\u002Fsfdcbeginner.com\u002Fchild-parent-communication-without-event\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>After:\u003C\u002Fstrong> \u003Ccode>http:\u002F\u002Fsfdcbeginner.com\u002Fchild-parent-communication-without-event.php\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n","Maintain SEO rankings with custom URL suffixes like .php or .html. Perfect for legacy site migrations, fixing 404s, and preserving link juice.",200,11174,"2026-02-08T19:14:00.000Z","6.9.4","2.5.1",[112,113,95,114,115],"301-redirect","legacy-site","seo-migration","url-suffix","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fphp-to-pages\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fphp-to-pages.2.1.zip",{"slug":119,"name":120,"version":121,"author":122,"author_profile":123,"description":124,"short_description":125,"active_installs":24,"downloaded":126,"rating":24,"num_ratings":127,"last_updated":128,"tested_up_to":109,"requires_at_least":129,"requires_php":14,"tags":130,"homepage":135,"download_link":136,"security_score":24,"vuln_count":13,"unpatched_count":13,"last_vuln_date":25,"fetched_at":58},"tinypress","PublishPress Shortlinks – Custom URLs for Posts and External Links – Share Previews for Draft Posts","1.3.0","PublishPress","https:\u002F\u002Fprofiles.wordpress.org\u002Fpublishpress\u002F","\u003Cp>With PublishPress Shortlinks you can create custom links for your posts and external links. These custom links have super-powers!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>You can make your links short and memorable.\u003C\u002Fli>\n\u003Cli>You can track who clicks on your links with detailed analytics.\u003C\u002Fli>\n\u003Cli>You can share posts in Draft and Pending Review status.\u003C\u002Fli>\n\u003Cli>You can control who can visit your links with passwords, expiry dates, and access control.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How to use PublishPress Shortlinks\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Custom URLs for your posts\u003C\u002Fstrong>. Imagine you’re hosting a big event and have a page on your website with all the details. PublishPress Shortlinks allows to create a short, memorable link for the event, for example: https:\u002F\u002Fpublishpress.com\u002Fgo\u002Fcool-party. You can track how many people click the link. You can set the link to expire after the event finishes. You can even download a QR code to share on brochures. Oh, because of the next feature, you can do all of this even if you’re selling event tickets on another website.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom URLs for external links\u003C\u002Fstrong>. Imagine you run a website with toy reviews. You join affiliate programs and make money when people click on your links and buy tools. PublishPress Shortlinks allows to create a short, memorable link for each toy, for example: https:\u002F\u002Fpublishpress.com\u002Fgo\u002Fcool-toy. You can track how many people click the link and get a full analytics report on those clicks.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Key Features in PublishPress Shortlinks\u003C\u002Fh3>\n\u003Cp>✅ Automatically create shortlinks for your posts\u003Cbr \u002F>\n✅ Use your own website domain for shortlinks\u003Cbr \u002F>\n✅ Customize the slug for each shortlink\u003Cbr \u002F>\n✅ Share shortlinks for posts in any status\u003Cbr \u002F>\n✅ Add password protection to your shortlinks\u003Cbr \u002F>\n✅ Automatically export your shortlinks on a specific date\u003Cbr \u002F>\n✅ Choose from 301, 302, and 307 redirects\u003Cbr \u002F>\n✅ Track who is clicking your shortlinks with analytics\u003Cbr \u002F>\n✅ Generate a QR code for each shortlink to allow easy sharing\u003Cbr \u002F>\n✅ Cloak your affiliate links\u003C\u002Fp>\n\u003Ch3>Automatically create shortlinks for your posts\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks will automatically generate links for all your posts and pages. This makes it really easy to have shareable links for content. These shortlinks are available from the Posts screen and the Post Edit screen.\u003C\u002Fp>\n\u003Ch3>Use your own website domain for shortlinks\u003C\u002Fh3>\n\u003Cp>There’s no need to use an external service to build and track your links. With PublishPress Shortlinks, all your custom URLs use your own domain name. To avoid conflicts with any regular URLs on your site, there’s also a folder which is set to “go” by default. This means that your custom URLs will look like this: https:\u002F\u002Fexample.com\u002Fgo\u002Fshortlinks\u003C\u002Fp>\n\u003Ch3>Customize the slug for each shortlink\u003C\u002Fh3>\n\u003Cp>Every post has its own URL. By default, the final part of the URL will be a unique combination of 5 characters, so your shortlink will look like this: https:\u002F\u002Fexample.com\u002Fgo\u002F8vi3n. However, you can customize the slug so it looks like this: https:\u002F\u002Fexample.com\u002Fgo\u002Fshortlinks.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fhow-to-customize-shortlinks\u002F\" rel=\"nofollow ugc\">More on customizing shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Share shortlinks for posts in any status\u003C\u002Fh3>\n\u003Cp>When you’re writing a draft post, do you sometimes need to share it with someone who doesn’t have access to your site? PublishPress Shortlinks is the answer. PublishPress Shortlinks allows you to share posts before you make them public. If you’ve written a draft of a post, you can share a preview with other people. You can protect these links by combining this with other features, including password protection and automatic expiry of links. This feature is similar to the Public Post Preview plugin, but with more features and customizable features.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fposts-status-visibility\u002F\" rel=\"nofollow ugc\">More on shortlinks for unpublished posts\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Add password protection to your shortlinks\u003C\u002Fh3>\n\u003Cp>Edit a shortlink and go to the “Security” tab. You’ll be able to create a password for your sharable links. Nobody will be able to access the post via your shortlink unless they know the password.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fprotect-shortlinks\u002F\" rel=\"nofollow ugc\">More on passwords for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Automatically expire your shortlinks on a specific date\u003C\u002Fh3>\n\u003Cp>Edit a shortlink and go to the “Security” tab. You’ll be able to choose an expiration date for your shortlink. Anyone trying to visit your link after the expiration date will see the message, “This link is expired.”\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fprotect-shortlinks\u002F\" rel=\"nofollow ugc\">More on expiry dates for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Choose from 301, 302, and 307 redirects\u003C\u002Fh3>\n\u003Cp>Edit a shortlink and go to the “Redirection” tab. You can choose what kind of redirect is used for each link. 301 (Permanent) redirects are used to tell search engines that a requested URL has been permanently moved to another URL. If you’re confident that your target URL will never change, then use this redirect type. 302 and 307 (Temporary) redirects tell search engines that the requested URL has been moved temporarily, but will be back eventually.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fredirect-options-for-shortlinks\u002F\" rel=\"nofollow ugc\">More on redirects for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Track who is clicking your shortlinks with analytics\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks has a Logs feature that records everyone who clicks your links. These logs are then turned into analytics charts so you can see how popular each shortlink is.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fanalytics-and-logs-for-shortlinks\u002F\" rel=\"nofollow ugc\">More on logs for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Generate a QR code for each shortlink to allow easy sharing\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks will automatically create a QR code for each link. This makes it easy to download and share the QR code so people can visit your URL. This is great for advertisements, brochures, PDFs, restaurant menus, or anywhere you want to use a QR code.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fqr-codes-for-shortlinks\u002F\" rel=\"nofollow ugc\">More on QR codes for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Cloak affiliate links\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks is ideal for websites that have affiliate links in posts. You can manage, clean up, brand, and track your links. It’s a great tool for cloaking affiliate links. PublishPress Shortlinks is a great tool for marketers plugin for people who want to clean up their affiliate links.\u003C\u002Fp>\n\u003Ch3>Create Shortlinks via Keyboard Shortcuts\u003C\u002Fh3>\n\u003Cp>Click \u003Ccode>Ctrl\u002FCmd + \u002F\u003C\u002Fcode> anywhere in the WordPress admin area to instantly create shortlinks.\u003C\u002Fp>\n","Create custom links for your posts. These links are brandable, trackable, and can have custom view permissions.",5242,2,"2026-03-02T21:27:00.000Z","4.6",[18,131,132,133,134],"link-shortener","link-tracking","redirects","shortlinks","https:\u002F\u002Fpublishpress.com\u002Fshortlinks\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftinypress.1.3.0.zip",{"attackSurface":138,"codeSignals":168,"taintFlows":190,"riskAssessment":191,"analyzedAt":199},{"hooks":139,"ajaxHandlers":164,"restRoutes":165,"shortcodes":166,"cronEvents":167,"entryPointCount":13,"unprotectedCount":13},[140,146,150,155,160],{"type":141,"name":142,"callback":143,"file":144,"line":145},"action","admin_enqueue_scripts","custom_url_mapper_enqueue_admin_styles","custom-url-mapper.php",35,{"type":141,"name":147,"callback":148,"file":144,"line":149},"admin_notices","custom_url_mapper_admin_notice",77,{"type":141,"name":151,"callback":152,"file":153,"line":154},"admin_menu","custom_url_mapper_add_admin_menu","includes\\clm-admin-page.php",24,{"type":141,"name":156,"callback":157,"file":158,"line":159},"parse_request","custom_url_mapper_parse_request","includes\\clm-rewrite-rules.php",41,{"type":141,"name":161,"callback":162,"file":158,"line":163},"init","custom_url_mapper_add_rewrite_rules",52,[],[],[],[],{"dangerousFunctions":169,"sqlUsage":170,"outputEscaping":172,"fileOperations":13,"externalRequests":13,"nonceChecks":127,"capabilityChecks":13,"bundledLibraries":189},[],{"prepared":13,"raw":13,"locations":171},[],{"escaped":173,"rawEcho":174,"locations":175},14,6,[176,179,181,183,185,187],{"file":153,"line":177,"context":178},50,"raw output",{"file":153,"line":180,"context":178},53,{"file":153,"line":182,"context":178},71,{"file":153,"line":184,"context":178},74,{"file":153,"line":186,"context":178},138,{"file":153,"line":188,"context":178},142,[],[],{"summary":192,"deductions":193},"Based on the provided static analysis and vulnerability history, the 'custom-url-mapper' plugin v1.0 exhibits a strong security posture with no detected vulnerabilities in its attack surface or code signals. The absence of AJAX handlers, REST API routes, shortcodes, and cron events significantly limits the potential entry points for attackers. Furthermore, the code signals show a complete absence of dangerous functions, external HTTP requests, and file operations. The fact that all SQL queries utilize prepared statements is a commendable practice, mitigating the risk of SQL injection. The presence of nonce checks and a reasonable percentage of properly escaped output further contribute to its security. The lack of any recorded vulnerabilities, past or present, across all severity levels, is a significant positive indicator. This suggests a history of responsible development and timely patching, if any issues were ever found. While the plugin currently appears very secure, the lack of capability checks is a potential area for future enhancement, especially if the plugin were to gain more complex functionalities. However, given its current limited attack surface, this is a minor concern.",[194,196],{"reason":195,"points":174},"20% of output not properly escaped",{"reason":197,"points":198},"No capability checks implemented",4,"2026-03-16T23:30:30.671Z",{"wat":201,"direct":208},{"assetPaths":202,"generatorPatterns":204,"scriptPaths":205,"versionParams":206},[203],"\u002Fwp-content\u002Fplugins\u002Fcustom-url-mapper\u002Fcss\u002Fcustom-url-mapper-admin.css",[],[],[207],"custom-url-mapper-admin?ver=1.0.0",{"cssClasses":209,"htmlComments":210,"htmlAttributes":211,"restEndpoints":212,"jsGlobals":213,"shortcodeOutput":214},[],[],[],[],[],[]]