| 开发者 | emtiazzahid |
|---|---|
| 更新时间 | 2026年10月13日 18:21 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
waymender_fix_log database table) records the old URL, the new URL (empty for Unlink and Remove), the action, the ID of the user who made it and the time, plus the revision ID when a revision was created. The log is only stored in the database: there is no screen for it and no undo. A menu item cannot be unlinked (edit or remove it under Appearance → Menus). A custom field that holds nothing but the URL gets the new URL, or is emptied when you unlink or remove it (you are told when that happens); an ACF link field keeps its title and target when its URL is replaced.
When an archived copy replaces a link, rel="nofollow" (on by default) is added to the link's existing rel value, never duplicated. That applies to HTML links in post content, excerpts, widgets, term descriptions, comments and HTML custom fields; menu items, custom fields that hold only a URL, and page-builder data keep their rel unchanged.
3. 404 log and redirects. Pages visitors could not find are logged with hit counts, referrers and a suggested target (fuzzy slug matching, date-prefix and case rules). One click turns an entry into a 301/302/307/410 rule. Wildcards, CSV import/export, and automatic hand-off when the Redirection plugin is active. Hit counts are sampled: each rule counts at most one hit per minute. To keep a flood of random URLs from filling the database, the 404 log records at most 120 hits per clock minute across the whole site (filterable with waymender_404_writes_per_minute); further 404s in that minute are not logged or counted.
Built to be light
wp waymender scan, wp waymender links, wp waymender fix (run it with --user=<administrator>; it refuses to run without a user, and the fix is logged under that user), wp waymender 404, wp waymender redirectwaymender_http_args, waymender_excluded_hosts, waymender_antibot_hosts, waymender_extract_sources, waymender_extracted_links, waymender_status_for_response, waymender_before_fix, waymender_after_fix, waymender_404_ignore, waymender_suggestions, waymender_scan_started, waymender_scan_complete, waymender_url_checked, waymender_capability, waymender_404_writes_per_minute, waymender_redirection_active.
More plugins by Emtiaz Zahid
/wp-content/plugins/waymender or install it from the Plugins screen.No. Scans run in the background in small batches with a delay between link checks on the same domain, and the batch size adapts to how fast your server answers. Working links are cached for seven days and not re-requested.
The destination refuses automated requests (LinkedIn, Instagram, Cloudflare challenges…). Waymender does not pretend to know; it lists these separately so you can check them by hand. A link that answers 429 (rate limited) or 503 (temporarily unavailable) is listed as blocked too, but it is checked again automatically: the hourly re-check picks it up once the site's Retry-After time has passed (never sooner than 5 minutes or later than 7 days), or after 3 hours when the site sends no Retry-After. Its status line says when, for example "HTTP 429 (rate limited, rechecks after 3h)".
Yes. Elementor, Bricks and Beaver Builder data is read from post meta (Settings → What to scan → "Page builder data stored in post meta"). Divi and WPBakery shortcodes live in the post content and are read with it: every attribute whose name ends in url, src, image, link, href or logo, plus Divi's src_webm, audio, background_video_mp4 and background_video_webm and WPBakery's custom_links (a comma- or newline-separated list, also when WPBakery stores it #E-8_-encoded). WPBakery's encoded link format (url:…|title:…) is read too. Numeric image attributes are attachment IDs, not URLs, and are not checked. Divi's _et_pb_old_content backup of the pre-builder content is not scanned, because the page does not show it.
For Elementor, Bricks and Beaver Builder, fixes are written into the stored builder data: Edit URL, Use archived copy and Replace image put the new address in place of the old one wherever it appears in that page's builder data, and Unlink and Remove empty it there. For Divi and WPBakery, Edit URL, Use archived copy and Replace image rewrite the URL inside that one shortcode attribute (WPBakery links keep their title and target; in a custom_links list only that entry changes, and an encoded list stays encoded); Unlink and Remove are refused with a message, because taking a link or image out of a builder element has to be done in the page builder. Page-builder links keep their rel attribute; no nofollow is added.
After a fix, the builder's generated CSS/asset cache is cleared for Elementor, Beaver Builder and Divi through their own functions. Waymender does not clear Bricks' generated files.
If Redirection is active and Settings → Redirects → Redirect engine is on "Automatic" (the default), every redirect you create, edit, switch off or delete in Waymender is written to a Redirection group called "Waymender", and Waymender stops serving redirects itself, so each rule runs exactly once. Rules you made before Redirection was activated can be copied across with one button on the Redirects screen. Wildcard rules become Redirection regular-expression rules. Choose "Always on" to serve redirects from Waymender instead, or "Off" to switch its redirects off entirely. When you switch from "Automatic" to "Always on" or "Off" while Redirection is active, Waymender deletes the redirects it wrote to Redirection (rules you made in Redirection itself are not touched), so no rule is served twice or left behind there. Switch back to "Automatic" and the Redirects screen shows the "Copy N existing redirects to Redirection" button again, N being the number of rules waiting to be copied.
No. Waymender has no server of its own and sends no usage statistics or telemetry. It contacts nothing until you start a scan, and then only the addresses listed under "External services" above: the sites your own content links to, one WordPress.org request if a check fails with a DNS error, and the Internet Archive when you ask for an archived replacement.
No. Waymender loads Action Scheduler 3.9.3 from lib/action-scheduler/. Action Scheduler is built for this: each copy registers its version with ActionScheduler_Versions behind function_exists() and class_exists() guards, and only the newest copy on the site boots. WooCommerce and other plugins that bundle it share the same mechanism.
The admin app and the editor integration ship un-minified in assets/src/; the files in assets/build/ are produced from them with npm install && npm run build (the package.json is included). The bundled Action Scheduler library in lib/ is unmodified upstream code under its own GPL licence. Nothing else is compiled or obfuscated.
Anyone who can edit a post can fix the links in that post's content and excerpt (Edit URL, Use archived copy, Replace image, Unlink and Remove) and dismiss them. The editor sidebar lists the post's problem links and offers Unlink and Remove; the plugin's REST route for a single fix (POST /wp-json/waymender/v1/fix/<id>) accepts the other fixes from the same users. Fixing links anywhere else (custom fields, page-builder data, menus, widgets, term descriptions, comments), fixing every occurrence of a URL at once, creating a redirect, and the Links, 404 log and Redirects screens need the manage_options capability (administrators by default). Every one of these checks goes through the waymender_capability filter, which receives a context: rest for the fix and other REST routes, redirects for creating redirects and the Redirects screen, and menu for the admin menu.