WordPress plugin that extends WooCommerce with a dedicated workflow for managing print orders sent to third-party print providers. It adds custom order statuses, tracking fields, CSV export, protocol-based CSV imports, and search/filter capabilities tailored to a print fulfillment pipeline.
studiou-wc-ord-print-statuses| Component | Minimum | Tested up to |
|---|---|---|
| WordPress | 5.8 | 6.8.3 |
| WooCommerce | 3.0 | 10.2.2 |
| PHP | 7.2 | — |
Compatible with WooCommerce High-Performance Order Storage (HPOS) — the plugin declares custom_order_tables compatibility and queries the HPOS wc_orders table directly.
studiou-wc-ord-print-statuses folder into wp-content/plugins/.No additional setup is required — custom statuses, fields, columns, and bulk actions are registered on activation.
Two new statuses are inserted in the WooCommerce status pipeline, right after processing:
| Slug | Label | Purpose |
|---|---|---|
wc-to-print |
Prepare to Printing | Order is queued and exported to the print shop. |
wc-in-print |
In Printing | Print shop has accepted the order. |
Status transitions automatically stamp the related metadata field (to_print_date / in_print_date) with the current server time.
A new Print Information panel is added to the order details screen with four editable fields:
to_print_date)in_print_date)external_ref_ord_no)external_ref_ord_delivered)An additional internal field external_ref_ord_date is populated during InPrint protocol imports.
Available in the Bulk actions dropdown on WooCommerce → Orders:
wc-to-print.wc-to-print and stamps to_print_date.wc-in-print and stamps in_print_date.Three columns are appended after Total:
The Orders list gains a search input that filters orders on the external_ref_ord_no meta value (LIKE match).
A WooCommerce → Import Protocols submenu exposes two CSV upload forms:
wc-in-print and the external reference number / date are saved.wc-completed and the delivery timestamp is recorded.Both importers require the manage_woocommerce capability and are protected by WordPress nonces.
Generated file: prepare_to_printing_export.csv
Columns (in order):
order_no, prod_cat, prod_name, prod_var, prod_var_type, prod_img_url, qty, email
prod_var_type is sourced from the variation's attribute_pa_format postmeta, resolved against the wp_terms table.
Required headers (case-sensitive):
order_no, externalorder, externalorderdate
Effect per row: order → status wc-in-print, sets in_print_date (now), external_ref_ord_no, external_ref_ord_date.
Required header:
order_no
Effect per row: order → status wc-completed, sets external_ref_ord_delivered (now).
The plugin follows a manager-based pattern. The main bootstrapper (studiou-wc-ord-print-statuses.php) wires up specialised classes, each owning one slice of behaviour:
| Class | File | Responsibility |
|---|---|---|
Order_Status_Manager |
includes/class-order-status-manager.php |
Register custom statuses, handle transitions. |
Order_Fields_Manager |
includes/class-order-fields-manager.php |
Render and persist Print Information fields. |
Bulk_Actions_Manager |
includes/class-bulk-actions-manager.php |
Register and dispatch bulk actions. |
Custom_Columns_Manager |
includes/class-custom-columns-manager.php |
Inject extra columns into the Orders list. |
Import_Manager |
includes/class-import-manager.php |
Admin UI + handlers for protocol CSV imports. |
Order_Search_Manager |
includes/class-order-search-manager.php |
Extend order search to external reference no. |
Studiou_DB_Manager |
includes/class-db-manager.php |
All SQL and protocol-processing logic. |
UtilsLog |
includes/utils-log.php |
Lightweight logging helper (uses WP_DEBUG). |
The export query in Studiou_DB_Manager::get_orders_for_printing() joins wc_orders, wc_order_product_lookup, posts (products + variations), postmeta (variation attribute + thumbnail), terms, term_taxonomy, and term_relationships to assemble the print-shop payload in a single round-trip.
studiou-wc-ord-print-statuseslanguages/cs_CZ) — see docs/translations.txt for the EN→CS reference list.Use the standard WordPress functions (__(), _e(), _x(), _n_noop()) for any new strings.
UtilsLog::log($message) writes to the WordPress error log when WP_DEBUG is enabled. With WP_DEBUG_LOG on, log output ends up in wp-content/debug.log. The plugin logs initialization, dependency loading, status changes, bulk actions, and SQL failures.
studiou-wc-ord-print-statuses/
├── studiou-wc-ord-print-statuses.php # Plugin bootstrap (header + main class)
├── includes/
│ ├── class-db-manager.php
│ ├── class-order-status-manager.php
│ ├── class-order-fields-manager.php
│ ├── class-order-search-manager.php
│ ├── class-bulk-actions-manager.php
│ ├── class-custom-columns-manager.php
│ ├── class-import-manager.php
│ └── utils-log.php
├── languages/ # .po / .mo translation files
├── docs/ # Project documentation (see below)
├── README.md # This file
└── CLAUDE.md # Guidance for Claude Code sessions
Reference documents live under docs/:
docs/readme.md — Previous user-facing readme (kept for history).docs/instructions.txt — Original feature specification used to scaffold the plugin.docs/translations.txt — EN → CS translation reference.Project-internal guidance for AI-assisted development is documented in CLAUDE.md.
prod_var_type column was empty in prepare_to_printing_export.csv. Variation attribute is now resolved through postmeta.attribute_pa_format joined against wp_terms.name.custom_order_tables compatibility.For bug reports, feature requests or commercial support, contact quadarax.com.
Released under the GNU General Public License v2.0 or later — see https://www.gnu.org/licenses/gpl-2.0.html.