Hooks & Actions
BallinKit integrates via standard WordPress hooks. These are the key action and filter hooks available for customization and extension.
Action Hooks
woocommerce_checkout_create_order_line_item
KIT hooks into this WooCommerce action to save all design metadata to the order item when an order is created:
// Fires when an order line item is created during checkout
// KIT uses this to save _kit_design, _kit_fonts, _kit_team_roster, etc.
add_action('woocommerce_checkout_create_order_line_item', function($item, $cart_key, $values) {
// $values['kit_design'] contains the full design JSON
// $values['kit_team_roster'] contains team player data
}, 10, 3);
woocommerce_before_order_itemmeta
KIT hooks here to render the design preview card in the WooCommerce admin order detail page:
// Fires before order item meta is displayed in WooCommerce admin
// KIT uses this to inject the design preview card
add_action('woocommerce_before_order_itemmeta', function($item_id, $item, $product) {
// $item->get_meta('_kit_design') contains design JSON
}, 10, 3);
kit_generate_print_file
KIT background action for scheduling print file generation:
// Trigger print file generation for an order item
do_action('kit_generate_print_file', $order_id, $order_item_id);
rest_api_init
All KIT REST routes are registered on this WordPress hook via KIT_REST_API::register_routes().
Filter Hooks
woocommerce_add_to_cart_validation
// KIT uses this to block adding customized products without an active license
add_filter('woocommerce_add_to_cart_validation', function($passed, $product_id, $qty) {
// Checks KIT_Licensing::is_license_active()
return $passed;
}, 10, 3);
woocommerce_hidden_order_itemmeta
// KIT hides its internal meta keys from the default WooCommerce display
add_filter('woocommerce_hidden_order_itemmeta', function($hidden) {
// Adds _kit_design, _kit_preview_url, _kit_fonts, etc.
return $hidden;
});
upload_dir
// KIT redirects uploads to the kit-uploads subdirectory when processing kit assets
add_filter('upload_dir', function($dirs) {
if (kit_upload_in_progress) {
$dirs['subdir'] = '/kit-uploads';
}
return $dirs;
});
ajax_query_attachments_args
// KIT filters the media library to show/hide kit assets
// Uses kit_only query flag to show only garment/pattern assets in the KIT media tab
add_filter('ajax_query_attachments_args', [$admin, 'filter_media_library_for_kit'], 10, 1);