| 开发者 | muri3 |
|---|---|
| 更新时间 | 2026年11月7日 23:43 |
| PHP版本: | 8.2 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
rel="sponsored"Mozilla/5.0 (compatible; MuriLinkTracker/{version}; +https://your-site-url). It carries the installed plugin version and your own site's address, so the remote servers being checked can identify the source of the request.
No third-party service is involved at any point. The plugin has no account, no API key and no cloud component: every check and every verdict is computed on your own server, and the only hosts contacted are the destinations your own content already links to. No personal user data is collected, stored, or transmitted to third parties.
Development
The release includes the matching React/JavaScript sources in admin/src/, along with package.json and package-lock.json. To rebuild the interface, run npm ci and npm run build from the plugin directory. Project development is also hosted on GitHub:
https://github.com/nicolasdiolez/muri-link-tracker
muri-link-tracker folder to the /wp-content/plugins/ directory.Muri Link Tracker uses WordPress Action Scheduler to process scans in the background. Posts are scanned in configurable batches, and each link is verified via HTTP HEAD request with GET fallback. Background processing requires a working Action Scheduler runner or cron. External checks require PHP cURL; content changes require InnoDB tables.
Full Scan re-indexes every link on your site and re-checks each URL's HTTP status. Delta Scan only processes posts modified since the last successful scan — ideal for recurring maintenance on large sites. Use Full Scan after major content migrations, Delta Scan for weekly check-ups.
Background work still consumes CPU, memory and database resources. Configurable batch sizes, timeouts and delays help control load. Jobs yield between groups of work; a slow DNS lookup or redirect chain can exceed the nominal job time budget.
Amazon, ShareASale, Commission Junction (CJ), Impact, Rakuten, ClickBank, Awin, Tradedoubler, Webgains, Commission Factory, FlexOffers, Skimlinks, Sovrn/VigLink, and PartnerStack. You can extend detection patterns via the mltr/classifier/affiliate_patterns filter.
URL patterns such as /go/product-name identify possible affiliate links. Internal URLs are resolved locally where possible. An unresolved internal redirect is shown as unverified; pattern detection alone does not prove its destination.
Yes. In Settings, enter a comma-separated list of post types (e.g., post, page, product) to include in scans. Any custom post type is supported.
When you edit or delete a link through the plugin, it updates the <a> tag directly in the post content. The post's modified date is preserved. A native revision is saved where WordPress revisions are enabled. Concurrent edits are rejected, and the content and link index are updated transactionally. Excerpts, custom fields, block attributes and relative source hrefs currently require editing in WordPress followed by a rescan; the plugin refuses unsupported automated edits. Remember to purge your page cache after bulk edits if you use a caching plugin.
Yes. A Cancel Scan button appears next to the progress bar during any active scan. Partial results are preserved. If a worker is currently writing, retry between batches.
Yes. If a scan is cancelled, crashes, or is interrupted by a server restart, you can resume it from the dashboard. The plugin tracks scan progress and picks up right where it left off.
You can configure a Recheck Interval (in days) from the Settings panel. Default is 7 days. A daily background job schedules stale links when Action Scheduler runs. A Full or Delta scan also checks the selected inventory.
Muri Link Tracker ships with interface translations for French (fr_FR), Spanish (es_ES), German (de_DE) and Italian (it_IT) — both the PHP side and the React admin app. The interface (and its notices) automatically follows your site language under Settings → General → Site Language.
Yes. The interface uses the text domain muri-link-tracker. Some technical failure diagnostics are currently in English. A POT file ships in /languages/ and translations are also open for the community on translate.wordpress.org. Technical SEO tokens (nofollow, sponsored, ugc, dofollow) and affiliate network names are intentionally kept untranslated.
mltr/scanner/allowed_ports filter.javascript: and data: URLs written in block attributes (button, image, file, cover…) are now ignored, as they already were in HTML, whatever their spelling, and the admin no longer renders a non-web URL as a clickable link.final_domain, risk_level and risk_flags columns, included in the AI Analysis preset.risk, risk_flag and final_domain filters on /links and /links/export; byRisk counts in GET /links/stats; GET|PUT /reputation/domains and POST /reputation/links/{id}/probe.mltr/reputation/signals, signal_weights, thresholds, parking_signatures, spam_terms, stop_words, compound_suffixes and should_probe filters, plus a mltr/reputation/assessed action.mltr_domains table and four columns on mltr_links. Upgrades apply automatically on the next admin page load; a one-off background pass backfills existing links so the feature has something to say about your back catalogue immediately.composer run make-pot regenerates the template and composer run make-json builds the React (JS) catalogs from the .po files, consolidated to the single admin bundle WordPress actually loads..pot template (259 strings) with the full v2.0 affiliate / rel / export / FTC UI strings.nofollow, sponsored, ugc, dofollow) and affiliate network names are intentionally left untranslated for cross-language consistency.mltr/check/link_checked that throws can no longer abort the scan batch or overwrite the link status that was just saved — the notification is now isolated from the persistence step.rel="sponsored" with dry-run preview — see exactly which URLs will be patched before confirming. Edits the live post_content silently (no revision, no post_modified change).rel="nofollow" for external links, symmetric to the sponsored flow. Dry-run preview + silent post update + sample list of patched URLs.Has rel="nofollow") and negative (Missing rel="nofollow", Missing rel="sponsored") options — easily spot links you forgot to annotate.rel_missing query param on /links and /links/export (nofollow|sponsored|ugc). New endpoint GET /links/externals/missing-nofollow returns IDs of external links lacking rel="nofollow". GET /links/stats exposes a new externalsMissingNofollow counter.target="_blank"). Automatically adds noopener noreferrer to the rel for security and Google compliance./links and /links/export accept a language filter. New GET /languages endpoint. Filter chip in the Links table appears only when a multilingual plugin is active.redirectChain, ISO 8601 datetimes, envelope with version and exported count.created_at, languages and a decoded redirect_chain./links and /links/export now accept created_at_from/to, last_checked_from/to ISO 8601 ranges, language and affiliate_network filters. New GET /links/stats adds affiliateMissingSponsored counter and affiliate_broken_count in byCategory.mltr_instances table without the new post_language column and offers a one-click "Retry migration" button. Prevents silent data loss on rescan./languages catalogs (the text domain and script translations were not being registered).(status_category, last_checked) index speeds up the pending lookup./links/export without format or columns continue to receive the same CSV as v1.1.0. PUT /links/{id} without target keeps the attribute as-is.PUT /links/{id} (URL validated via wp_http_validate_url(), rel filtered against the allowed token list).(post_id, link_id) on the instances table; existing installs get it automatically on next admin page load (no re-activation needed).