| 开发者 | canopuswebagency26 |
|---|---|
| 更新时间 | 2026年7月26日 23:32 |
| PHP版本: | 7.2 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv3 or later |
| 版权网址: | 版权信息 |
@graph (Organization, WebSite, Article, Product, BreadcrumbList and more) instead of disconnected snippets.[nexal_breadcrumbs] shortcode or nexal_seo_breadcrumbs().NexalSeo folder to /wp-content/plugins/.No, not by default. The semantic analysis engine (Topical Completeness, Cluster Health, Semantic Structure) runs entirely on your server. The only outbound requests are the opt-in AI integration described in "External services" above, and only when you explicitly trigger it with your own API key.
Deleting the plugin (not just deactivating it) removes all of its settings, cached data, custom database tables (redirections, 404 log) and post/term meta.
$_SERVER, $_POST and $_GET input flagged by the review is now sanitised at the point of read — the visitor-analytics user-agent, IP (REMOTE_ADDR) and Origin/Referer host, the llms.txt editor content, the Yoast/Rank Math import source, and the redirections request URI and source prefill.term_description() (the taxonomy parameter, deprecated since WordPress 4.9.2) in the CollectionPage schema output.DATE_FORMAT mask through $wpdb->prepare() as a placeholder instead of interpolating it into the SQL string.nexal_seo_ prefix (was nxs_)..po/.mo/.json translation files were removed — the plugin is fully internationalized and translations are now delivered automatically through translate.wordpress.org.category taxonomy like Posts do. Pages (which have no taxonomy by default) always showed "Suggestion: publish at least 3 articles in this category" no matter how good the page actually was, and WooCommerce Products (which use product_cat, not category) got zero cluster data too. These checks now detect the right taxonomy per post type (falling back to any hierarchical taxonomy for custom post types), and show an honest "this content type doesn't use categories" message instead of a misleading one when there genuinely isn't one.gemini-1.5-*) and Anthropic (claude-3-5-*) pointed at model snapshots both providers have since fully retired, so the default "Re-analyze with AI" selection failed outright for anyone who hadn't manually picked a different model. Refreshed all five providers' suggested models against their current docs (Gemini 2.5 family, Anthropic Claude Haiku 4.5/Sonnet 5/Opus 4.8, Groq and OpenRouter's current model/free-tier lineups). If you already have an old model ID saved in Settings → AI, clear the model field (or pick "Custom" with a current ID) to pick up the new default.nexal_seo_settings option exists yet) silently discarded the submitted values, leaving the fields blank after reload. Root cause: WordPress runs the settings sanitize callback twice when the option row doesn't exist yet — once inside update_option(), then again inside add_option(), fed the callback's own prior output — and the hidden field each tab used to know "which tab was submitted" wasn't preserved into that output, so the second pass silently skipped reprocessing the tab and fell back to blank defaults. The Titles & Meta tab happened to avoid this by coincidence (its marker field is also a real stored setting); AI, Social, Local SEO and Breadcrumbs did not. Confirmed fixed via a real end-to-end HTTP save on a freshly-installed site.wp_nonce_url()'s HTML-escaped output directly in an HTTP Location header, so every batch after the first silently failed (the literal & broke query-string parsing) — imports could stop after the very first batch of ~40 posts with no error shown. Confirmed fixed via a full end-to-end HTTP test through the real batch-redirect chain./sitemap.xml or /llms.txt while that feature was turned off served the homepage with a 200 OK status instead of a proper 404 (WordPress's default query silently falls back to the front page when a rewrite-matched URL doesn't resolve to real content) — confirmed via automated testing that this also fully restores correct 404-monitor logging for both URLs.’s instead of 's) since the output is served as plain text, not HTML.ABSPATH, which isn't always the same folder a site's domain actually serves from. It's now served virtually through a rewrite rule instead — the same approach this plugin's own XML sitemap already uses — so it works regardless of hosting/filesystem setup. The button now toggles llms.txt on/off (content is generated fresh on every request, so there's no separate "regenerate").uninstall.php to fully remove options, transients, custom tables and post/term meta when the plugin is deleted.@graph (Organization, WebSite, Article, Product, BreadcrumbList) instead of separate, disconnected JSON-LD blocks.