| 开发者 | abdoudiba |
|---|---|
| 更新时间 | 2026年8月29日 14:32 |
| PHP版本: | 8.1 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
composer install --no-dev in the plugin directory first./wp-content/plugins/ or install via Plugins → Add New → Upload. Activate.No — it's a different piece of the same workflow. This plugin drafts and calculates a quote document; it doesn't (yet) handle the customer-facing request form or checkout integration some B2B plugins provide.
Not in this version — it generates a PDF for you to download and send yourself. Automatic emailing is on the roadmap.
Every drafted line is fully editable before you finalize — fix the description, price, or swap in the correct product from the search dropdown.
Whichever one you've connected under Settings → Connectors — this plugin
has no AI integration of its own. It calls WordPress's built-in AI Client
(wp_ai_client_prompt(), core since WordPress 7.0), which routes the
request to your connected provider. If no provider is connected, AI
drafting is disabled and you can still build a quote manually.
sabberworm/php-css-parser can go
back to its latest release (9.4.0, was pinned to 9.0.0 in 0.4.4) while
its thecodingmachine/safe dependency resolves to v3.4.0 instead of the
old v1.3.3 — v3.4.0 uses explicit nullable-parameter types, so the
PHP 8.4+ deprecation notices from 0.4.3/earlier don't come back. Verified:
zero deprecation notices with full error reporting on.wp_print_styles()), not hand-written markup. Every previous shape here —
a literal <style> block, file_get_contents() echoed into one, a <link>
pointing at a local file path — kept getting flagged as "not enqueued" by
either the automated check or a human reviewer, even backed by real
wp_register_style()/wp_enqueue_style() calls. This removes all
hand-written stylesheet markup from the plugin; dompdf fetches the
resulting URL the same way it already fetches an optional logo image
(Options::isRemoteEnabled). Verified dompdf correctly fetches and applies
a stylesheet served over HTTP.thecodingmachine/safe v1.3.3, pulled
in by sabberworm/php-css-parser) that emitted PHP 8.4+ "implicitly
nullable parameter" deprecation notices on every request, even though this
plugin never calls any of its functions — Composer loads all of a
package's files-autoloaded code unconditionally. Pinned
sabberworm/php-css-parser to 9.0.0 (the last release before that
dependency was added) instead of patching around the warnings. No
functional change — verified the CSS-parsing dompdf relies on for quote
PDFs still renders identical output, and that loading the plugin no longer
emits any deprecation notices with full error reporting on.wp_register_style()/wp_enqueue_style() in
YSQD_PDF::build_html(), not just read from a file. The template outputs
a <link rel="stylesheet"> for it, which dompdf resolves straight off
local disk via Options::setChroot() (no HTTP round-trip, no dependency
on the site's own URL being publicly reachable). Rendered PDF output is
unchanged — verified against a real generated quote PDF.assets/css/quote-pdf.css)
and echoed in PHP, which WordPress.org's Plugin Check tool now confirms
triggers zero enqueue-related findings (the plain <style> block, and a
<link rel="stylesheet"> alternative, both did). Behavior and rendered
output are unchanged — verified against a real generated PDF.wp_ai_client_prompt()) instead of calling OpenAI/Anthropic directly.
The site owner connects a provider under Settings → Connectors; this
plugin no longer stores or asks for an API key. Requires at least
raised to WordPress 7.0 accordingly.<style> block as a missing
wp_enqueue_style() call.waq_ -> ysqd_
for distinctiveness and a 4+ character unique prefix.Requires Plugins: woocommerce header.POST /wp-json/ysqd/v1/quotes) exposing the AI-draft
pipeline to external automation — always creates a draft, never a
finalized quote. Authenticated via WordPress core Application Passwords.admin_action_* instead of admin_post_*, the
hook admin-post.php actually dispatches on), so nothing ever ran.