| 开发者 | xpaysh |
|---|---|
| 更新时间 | 2026年7月14日 22:28 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
Product, Offer, AggregateOffer, BuyAction and ItemList schemas on product pages, shop archive and home page. Detects existing schema from Yoast / Rank Math / WooCommerce core and only fills the gaps./llms.txt (llmstxt.org), schema.org Product/Offer/BuyAction JSON-LD on every product page, and an explicit robots.txt allowlist for AI user-agents. Optional watchlist emitters for /.well-known/oauth-protected-resource (RFC 9728, when UCP OAuth identity linking is on) and /.well-known/agent-card.json (A2A 1.0, off by default). The discovery layer is registry-based so new standards plug in cleanly._xpay_agent_attribution so you can attribute AI-driven revenue in your existing reporting.FAQPage and MerchantReturnPolicy JSON-LD answering the commerce questions AI shoppers ask (delivery, returns, variants). Optionally it can also show those answers to your shoppers as a block on the product page — off on new installs, enabled for your store from your xpay account on request. Placement is a WooCommerce product tab, the classic product-summary hook, or an [xpay-faq] shortcode you place yourself.define( 'XPAY_WC_TELEMETRY', false ); in wp-config.php.https://) on the store domain — required for the agent discovery files to be honored by AI surfacesNo. The plugin emits a small <script type="application/ld+json"> block in <head> on product pages, shop and home (only when no other plugin has already emitted equivalent schema). The discovery files (/llms.txt, /.well-known/ucp, /.well-known/oauth-protected-resource, /.well-known/agent.json) are served through WordPress rewrite rules with no database query. The catalog feed itself is hosted on xpay's CDN, not your origin — so AI shoppers reading it never load your origin.
No. Payment runs through your existing WooCommerce gateway (Stripe / WooPayments / PayPal / Square / etc.). xpay never touches your checkout, your cards, your buyer PII, or your refund flow.
xpay detects the existing schema at runtime and only adds the bits it's missing — typically BuyAction on product pages and ItemList on the homepage. No duplicate schema is emitted. The same applies to FAQ schema: where xpay can see that another plugin has already published a FAQPage on a product page, it stands down rather than adding a competing one.
Almost nothing xpay adds is visible to shoppers — JSON-LD, discovery files and robots rules all sit in the page source. The one exception is the product FAQ block: for products you approve in your xpay dashboard, xpay can show those questions and answers on the product page itself.
On a new install it is off. Switching it on is done from your xpay account — ask us and we'll enable it for your store, and we can switch it off again at any time. The setting lives with xpay rather than in WordPress, so it changes the moment we set it and never waits on a plugin update.
If your store is already showing the block (earlier versions displayed it automatically for any approved product, with no way to say no), it keeps showing — this release does not rip it off your live product pages. What changes is that it can now be turned off, which previously it could not.
Approving a FAQ and displaying it are separate decisions. With the block off, the answers are still published as FAQPage schema for AI shoppers and search engines — you just don't render them on the page.
Developers: add_filter( 'xpay_wc_faq_visible', '__return_false' ); disables the block from your own code, whatever the dashboard says.
When it's on, you choose where it goes: a WooCommerce product tab (works with Elementor and other page builders), the classic position under the product summary, or an [xpay-faq] shortcode you place yourself.
Two data paths:
agent-feed.xpay.sh/catalog/{your-slug}.json so AI shoppers can read it.plugin_activated, settings_viewed, resync_error, etc.) tagged with your site URL and plugin/WP/WC/PHP versions. No customer data, no order data, no PII.Plugins → Deactivate → Delete. The bundled uninstall.php removes every option the plugin wrote. To also delete the catalog feed from xpay's CDN, email privacy@xpay.sh from your admin email with your merchant slug.
Settings → xpay → Privacy → Turn off. Or define XPAY_WC_TELEMETRY to false in wp-config.php for a system-wide hard disable.
Yes. The plugin also serves the discovery file at https://yoursite.com/?xpay_route=acp. AI shoppers that respect the Link header find this fallback automatically. If your host is interfering, contact them — many hosts (especially those that handle ACME challenges themselves) intercept /.well-known/* before WordPress sees it.
Yes. Each store gets its own merchant slug and its own catalog feed. Pricing applies per store.
Yes. GPLv2-or-later, public repo at github.com/xpaysh/agentic-commerce-for-woocommerce.
Free to install and get started. Paid plans are available as you scale — see www.xpay.sh/pricing/.
The plugin publishes simple, variable, and grouped products in v0.1. Subscriptions, bookings, and memberships are on the roadmap — track progress in the GitHub repo.
Email merchants@xpay.sh or open an issue at github.com/xpaysh/agentic-commerce-for-woocommerce/issues.
xpay_wc_purge_site_cache to wire up any other stack.)/cart/ page entirely, leaving any link to it a dead end. A link ending in #open-cart now opens the drawer instead. Does nothing on stores without a side cart. Developers can switch it off with add_filter( 'xpay_wc_side_cart_bridge', '__return_false' );.add_filter( 'xpay_wc_faq_visible', '__return_false' );.[xpay-faq] shortcode if you want to place it exactly where you like. Classic themes keep the original placement._xpay_ref persistence cookie OFF by default; the WC session still carries attribution through the active shopping journey (~48h). New xpay_wc_attribution_cookie_enabled option and xpay_wc_attribution_should_set_cookie filter for CMP integrations (Cookiebot, Iubenda, Complianz, etc.).wp_schedule_single_event cron job that fires immediately through WP-Cron loopback, keeping the shopper's thank-you page on the critical path. An in-flight sentinel collapses concurrent completion hooks into a single dispatched job.gtin8/gtin12/gtin13/gtin14; alphanumeric values now route to the bare gtin slot per schema.org so Google Search Console accepts the markup on every PDP.utm_source from ChatGPT, Perplexity, Claude, Gemini, Copilot, Meta AI, You.com, DeepSeek, Grok, Phind, Poe, Mistral, HuggingChat, Kagi or DuckDuckGo AI — the order surfaces in your xpay dashboard's attributed-orders feed with revenue split by source. First-touch attribution carried in a first-party cookie (30 days, no third-party tracking).order_id, placed_at, status, amount_total, amount_discount, currency, line_count, ordered SKUs and the attribution source leave your store. Never customer email, address, phone or IP. The server-side ingest enforces an allow-list on top-level keys as defence in depth.
As of 0.5.2 an attributed order may also carry: the WooCommerce Agentic Checkout session and provider ID (present only on orders an AI agent completed through WooCommerce's own agentic checkout), and WooCommerce's own order-source context — the channel type (utm/organic/referral/typein/admin), the device type, and the path of the page the shopper first landed on. The landing value is the path only: the host, query string and fragment are stripped before it leaves your store, so no tokens or personal data can ride along. Still never sent: customer email, address, phone, or IP.
global_unique_id (WC 8.6+) or a legacy GTIN/EAN/UPC value, it's emitted in the Product JSON-LD as gtin8/gtin12/gtin13/gtin14 so Google Shopping, Bing and AI shopping agents can match each PDP to the corresponding offer in your feed.WC()->cart->add_to_cart() so variable-product lines flow into checkout correctly. Variation SKUs supplied without a separate variation id are resolved automatically./agents.md agent skill. A dedicated, machine-readable skill served at yourstore.com/agents.md that tells AI shopping agents (and skill-using assistants) exactly how to connect to your store: browse the live catalog over MCP or REST, look products up, and build a cart that hands the shopper off to your existing checkout. Purpose-written connect-and-transact instructions — not a copy of /llms.txt. Served once your store is connected; like our other discovery files it steps aside quietly if you already publish your own /agents.md./llms.txt merge. When appending to an existing /llms.txt, the plugin ignores non-text responses. Hybrid/headless storefronts and single-page themes that answer every URL with an HTML page have that page rejected instead of pulled in above our agent-shopping sections./llms.txt catalog link now points at your store's own agent-commerce surface instead of the shared feed host (same data, your brand)./llms.txt rather than replacing it, and fully reverts the moment you deactivate.agent-feed.xpay.sh, agent-commerce.xpay.sh, app.xpay.sh) and what each receives, alongside the Terms and Privacy links./.well-known/ discovery files. Each row shows pass/fail with the HTTP status, and any failure renders the exact next step — switch Permalinks off "Plain", or (on Apache/ACME hosts that reserve /.well-known/) the query-arg fallback URL that agents can still use.llms.txt (e.g. via Yoast SEO AI, RankMath AI, AIOSEO, or your own setup), the plugin appends our agent-shopping sections at the end of your file. Everything you wrote is preserved exactly as you wrote it; /.well-known/* JSON emitters defer to existing handlers cleanly.rest_url(). The fallback UCP manifest now calls rest_url('xpay/ucp/v1') / rest_url('xpay/mcp') instead of hardcoding home_url('/wp-json/...'), so the plugin respects sites that customize the REST prefix. Per the WP.org Determining Locations guideline.WP_DEBUG=true.Requires Plugins: woocommerce header. Declares the WooCommerce dependency via the WP 6.5 plugin-dependencies mechanism so the plugin won't activate without WooCommerce present. Existing manual activation check remains as defence-in-depth for pre-6.5 sites.<script> tag; click-time telemetry is recorded server-side in the redirect handler instead.payment_handlers[]), Links (auto-detect privacy/TOS/about/contact/shipping with per-row override), Tools (view UCP profile, view full audit, test connection, refresh catalog now, telemetry debug log toggle). URL is bookmarkable via ?tab=./.well-known/ucp. Switching off any of checkout / fulfillment / discount / order removes the entry from the emitted UCP manifest. Default (no option set) = all enabled, so existing installs don't regress on upgrade.payment_handlers[] now populated from the Payments tab. Each enabled gateway emits as {id, label, type:"merchant_gateway"} so UCP-aware agents can negotiate payment surfaces against the methods you actually accept.ucp.links array. Privacy, TOS, About, Contact, Shipping URLs are auto-detected (WordPress privacy_policy_url + common page slugs) and overridable on the Links tab; emitted in the manifest as {rel, href} pairs./.well-known/ucp. Native MCP-speaking agents (Claude, ChatGPT Operator, Shopify AI Toolkit) discover the endpoint at agent-commerce.xpay.sh/mcp/{slug} without further configuration. Three tools available: search_catalog (BM25-ranked over title + description), get_product (lookup by SKU or numeric product ID), create_cart (returns a signed deeplink that pre-populates checkout on your store)./wc-auth/v1/authorize OAuth. When you click Connect store, the xpay onboarding page opens WooCommerce's built-in approval popup. You approve there once and WordPress hands xpay read-only API credentials directly — no Settings → Advanced → REST API trip, no copy-paste. The manual paste flow remains available as a fallback.DELETE /v1/merchants/{slug} so your account is marked disconnected and the cached agent-feed catalog is archived. Local cleanup happens regardless of whether the backend acks.extends emitted as an array (["dev.ucp.shopping.checkout"]); capability spec URLs uniformly date-prefixed; payment_handlers: [] placeholder added for parity with the rest of the ecosystem.rest_finalize is idempotent on (slug, api_key) replay, so a re-click of Connect store is always safe within the nonce TTL. Initial catalog resync moved to wp_schedule_single_event + non-blocking wp_remote_post so the REST response returns in under a second on hosts whose outbound HTTPS to xpay is slow. Paired with a backend change that delivers credentials before consuming the nonce and surfaces a clear actionable error if the WP site is unreachable./llms.txt ## Commerce protocols section is now gated on the xpay_wc_protocol_endpoints wp_option (backend-pushed during Connect). Agents that follow a URL from /llms.txt reach a working service or a structured 501 — never a bare 404.agent-commerce.xpay.sh/{ucp,acp,ap2,mcp}/... now return a 501 Not Implemented envelope with protocol, spec, merchant_slug, status, retry_after_seconds, and a docs link.xpay_wc_protocol_endpoints lets a mu-plugin override./llms.txt and hosted on xpay infrastructure. The plugin keeps the merchant's domain to what genuinely belongs there: discovery files, JSON-LD, robots.txt allowlist./.well-known/ucp (UCP business profile, spec 2026-04-08). This is the file Google, Shopify, Etsy, Wayfair, Target and Walmart fetch to negotiate capabilities with your store. The plugin generates a sensible default profile pointing at xpay-hosted UCP service endpoints; commercial-tier merchants can override the body + inject JWK signing keys via the xpay_wc_ucp_profile and xpay_wc_ucp_signing_keys options./llms.txt, /.well-known/ucp, RFC 9728 OAuth metadata, A2A agent-card) is a registered emitter with a default-on/default-off flag and per-merchant override. Adding a new standard means adding a new emitter — no changes elsewhere in the plugin./.well-known/oauth-protected-resource (RFC 9728) — turns on automatically when UCP OAuth Identity Linking is enabled for the merchant on the xpay side./.well-known/agent-card.json (A2A 1.0, IANA-registered 2025-08-01) — opt-in via the xpay_wc_emit_agent_card option once A2A adoption matures in commerce./llms.txt content refresh. Now links the agent-readable catalog, the per-protocol endpoints (ACP / UCP / AP2 / MCP), the cart-deeplink template, and top product categories. Markdown structure follows the llmstxt.org convention./llms.txt, not at a single discovery file.agentic-commerce-for-woocommerce).agentic-commerce-for-woocommerce), main file name (agentic-commerce-for-woocommerce.php), /languages/agentic-commerce-for-woocommerce.pot, admin page slug, plugin folder name inside the zip. User-Agent header for outbound HTTP. Settings page H1.agent-feed.xpay.sh, agent-commerce.xpay.sh, etc.), or anything else functional.PrefixAllGlobals warnings:uninstall.php now runs in an anonymous-closure IIFE — no top-level $option_keys / $key globals.class-xpay-schema.php :: render_product() uses a local $xpay_product and skips the global $product declaration entirely. Direct wc_get_product(get_the_ID()) works on PDPs without WC's template-loop side effect.class-xpay-plugin.php :: woocommerce_active() uses raw get_option('active_plugins') + multisite merge + class_exists('WooCommerce') instead of filtering WP core's active_plugins hook. Same behavior, no false-positive.load_plugin_textdomain() call. Discouraged since WP 4.6 — WordPress.org-hosted plugins get translations loaded automatically by core via the plugin slug.INSTAWP_TEST_WALKTHROUGH.md, README.md) from the release zip. The plugin zip should only contain files needed at runtime; READMEs and walkthroughs are repo-only.docs.xpay.sh/products/woocommerce/* → docs.xpay.sh/merchants/woocommerce/*. Merchants is the bucket; WooCommerce is one (of many future) integrations inside it. Future Shopify / BigCommerce docs will live as siblings.https://www.xpay.sh/pricing/?tab=agentic-commerce.xpaysh/xpay-for-woocommerce GitHub repo flipped public. Restored repo link references in readme.txt FAQ and "Source code" section so reviewers and merchants can browse the unminified source directly. GPLv2-or-later unchanged./.well-known/ (some shared hosts, CDN edges, ACME setups) can now serve the discovery file at /?xpay_route=acp. Discoverable via the Link header on the home page.phpcs.xml.dist ruleset added.languages/xpay-for-woocommerce.pot generated.xpay-woocommerce → xpay-for-woocommerce (Guideline 17).