| 开发者 | tackquote |
|---|---|
| 更新时间 | 2026年8月26日 01:35 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
tackquote) and never block checkout.tackquote.zip from the releases page, or build it from source with bash bin/build.sh.In TackQuote, go to Settings → Developer → API Keys.
Yes. The plugin declares HPOS (custom_order_tables) compatibility via WooCommerce FeaturesUtil and uses the WooCommerce order CRUD APIs (wc_get_order, order status hooks) rather than direct wp_posts order queries. You can run with HPOS enabled.
No. Sync is one-way: WooCommerce → TackQuote on order create and status change. Turning the toggle off stops new pushes; it does not delete data already in TackQuote.
Yes, with one line of code. WooCommerce core has no purchase-order field, and there is no
meta key this plugin could guess that would be right for every B2B extension — a guess that
looks correct and silently returns nothing is worse than an empty field. So the value is
read through a filter your theme or a small site plugin fills in:
add_filter( 'tack_quotes_order_po_number', function ( $po, $order ) { return $order->get_meta( '_my_checkout_po_field' ); }, 10, 2 );
Replace _my_checkout_po_field with the meta key your checkout writes. Without this filter
nothing is sent and TackQuote records no purchase-order number.
No, and no. "Add to Quote" adds the product to a separate, browser-side quote list — it never touches the WooCommerce cart, stock, or totals. "Checkout as Quote" creates a quote request in TackQuote from that list's contents. Customers can still shop and check out through WooCommerce completely normally, at the same time, with no interaction between the two.
So shoppers can add multiple products before requesting one combined quote. Use the floating "Quote list" button (bottom-right) once you've added everything you want quoted, then click "Checkout as Quote".
subtotal was never sent, so the receiving end recorded subtotal = total — meaning every order from a store that charges tax or shipping claimed its goods cost what the customer paid.tack_quotes_order_po_number filter. WooCommerce core has no purchase-order field, so nothing is sent unless your store wires one up; see the FAQ. Previously a purchase-order number could never be reported at all.modifiedAt is sent but deliberately excluded from the idempotency hash. Under HPOS, recording a successful push writes order meta, and that stamps a new modified date — so hashing it would have invalidated the key the push just recorded and de-duplication would never have converged.tack-quotes; it has been tackquote since the 1.3.3 slug rename.tests/test-order-payload.php, a WP-CLI contract test that names every required payload field against a real WooCommerce order, and offline payload coverage in tests/run.php.woocommerce_is_purchasable is actually hooked, not just that the callback decides correctly. It previously proved only the latter, so a wiring mistake would have hidden the buttons while the Store API kept taking orders. No behaviour change — the wiring was already correct.woocommerce_is_purchasable, which WooCommerce checks before accepting any cart line — so a hand-crafted ?add-to-cart= link, the Store API and cached pages are all refused, not just the button hidden.page=tack-quotes, which was the admin page slug up to 1.3.1; the 1.3.2 and 1.3.3 renames moved the slug to tackquote and left the link behind. Pointing at an unregistered page makes WordPress emit its permission-denied message, so the failure looked like a capability problem and was not one. The link is now derived from the same constant the menu is registered with, so the two cannot drift again.tests/run.php, no PHPUnit or WordPress install required) asserting the Settings link resolves to a registered admin page that requires manage_options.tackquote, matching the slug assigned on WordPress.org. WordPress requires the text domain to equal the slug, and a plugin folder that disagrees with either is its own defect. The admin page, the enqueued script/style handles, the Action Scheduler group and the WooCommerce log source move with it, so the log source is now tackquote.tackquote-for-woocommerce/ to tackquote/, so WordPress treats the new ZIP as a separate plugin. Deactivate and delete the old copy after installing this one. Your API key and toggles are stored as WordPress options and survive both.tackquote-for-woocommerce/, matching the plugin slug, and is rebuilt from the current source. The previously published download still contained pre-1.2.0 code, so stores installing it got the old buttons and none of the 1.3.1 security fixes.WC tested up to header that WooCommerce needs before it will surface any compatibility declaration.prompt()/alert() quote-request flow with a real modal dialog (email + optional note fields, inline validation, loading/success/error states). Email is pre-filled for logged-in customers.