| 开发者 | moksa0923 |
|---|---|
| 更新时间 | 2026年8月1日 23:45 |
| PHP版本: | 8.2 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv3 |
| 版权网址: | 版权信息 |
Yes. Every payment method ships an AbstractPaymentMethodType + React component, and the convenience-store picker / invoice fields render inside the Checkout block.
Yes. All order meta uses $order->update_meta_data() / $order->save(), never update_post_meta().
Yes. Payment, shipping and invoice modules are fully independent — any combination works.
It is an optional in-admin chat assistant for managing orders, e-invoices, shipping labels and module settings in natural language. It requires WordPress 7.0 (for the built-in AI Client) and an AI provider connected under Settings → Connectors; enable it under the plugin's Advanced settings. Every action that changes data first asks for your confirmation, and the assistant can never read or change your provider credentials, switch sandbox/live mode, or issue refunds.
Yes, optional and off by default. Turn it on under WooCommerce → Moksa AI → Settings → "Enable external MCP server". The plugin then serves a standards-compliant, stateless MCP (Model Context Protocol) endpoint at /wp-json/moksa-for-woocommerce/v1/mcp that any standard MCP client (for example mcp-remote or Claude) can connect to directly — no bridge required.
Authentication uses a WordPress Application Password for a user that has the "edit orders" capability; use a dedicated, limited account rather than an administrator. Connect your client to the endpoint with an Authorization: Basic <base64 of username:application-password> header. By default only read-only tools (look up orders, reports, settings overview) are exposed; order-changing tools stay hidden unless you also enable the "allow external AI to make changes" option, and destructive actions still require in-store confirmation. Every request is permission-checked on the server.
_x), so the districts that share a name across cities — Zhongzheng in both Taipei and Keelung, for example — are no longer collapsed into one entry that translators cannot tell apart.moksa-for-woocommerce, matching the assigned plugin slug (all 4,000+ gettext calls, the plugin header, the block-checkout scripts and the bundled zh_TW translation files were updated; the main plugin file was renamed accordingly).GET /v1/payment/{id}) and the authoritative API response gates the order transition: order_confirm requires API status S with a matching amount, and expiry/failure notifications are rejected for orders the API reports as paid. The allowlisted IPs are now filterable via moksafowo_pchomepay_notify_ips.edit_product capability in-place (fail-closed) instead of relying on the upstream caller having done so.MoksaWeb\Mowc\ to Moksafowo\, so every global identifier the plugin declares (namespaces, constants, options, hooks, AJAX actions, database tables) now shares the single moksafowo prefix.woocommerce_get_sections_*, woocommerce_get_settings_*, woocommerce_shipping_*_is_available) even though the methods that fire them fully override WooCommerce and never call the parent implementation. They are now moksafowo_*.moksafowo; the unused legacy MOWP_VAULT_KEY constant fallback was removed.$wpdb->prepare() using the %i identifier placeholder, and every LIKE pattern through %s. No table name or search term is interpolated into SQL anywhere in the plugin, including uninstall.php.Aes::decrypt_cbc_hex() validated its input only after calling hex2bin(), which emitted a PHP warning on malformed input before the exception was thrown. It now validates first.WC_Settings_Page, WC_Shipping_Method::is_available()) that mandate the woocommerce_*-prefixed filter tag names flagged by the automated prefix scan — these are WooCommerce's own extension-point names, not ones this plugin defines.moksafowo prefix (options, hooks, AJAX actions, gateway IDs, script handles, order meta, custom order statuses) per WordPress.org review.<script> / <style> output replaced with wp_enqueue_*, wp_add_inline_* and wp_print_inline_script_tag().wp_kses allowlists at output time.