Hooks & Filters
200+ extension points for customizing the plugin. Grouped by subsystem.
For the full machine-generated list with file:line, see the plugin's docs/hooks-filters.md.
Conventions
- Actions —
do_action( 'wkafw_*' )— fire-and-forget events - Filters —
apply_filters( 'wkafw_*' )— return-value modifiers - All hooks are prefixed
wkafw_to avoid collisions - Wallet-specific hooks may use
wkwc_wallet_*prefix (submodule)
Bidding {#bidding}
apply_filters( 'wkafw_pre_place_bid', $passed, $auction_id, $user_id, $amount );
apply_filters( 'wkafw_validate_bid', $valid, $auction_id, $user_id, $amount );
apply_filters( 'wkafw_bid_amount', $amount, $context );
apply_filters( 'wkafw_bid_meta', $meta, $auction_id, $user_id );
apply_filters( 'wkafw_required_increment', $increment, $auction_id, $current_price );
apply_filters( 'wkafw_increment_tiers', $tiers, $auction_id );
apply_filters( 'wkafw_min_bid_amount', $min, $auction_id );
do_action( 'wkafw_bid_placed', $bid );
do_action( 'wkafw_bid_failed', $reason, $context );
do_action( 'wkafw_bid_retracted', $bid );
Auction lifecycle {#auction-lifecycle}
do_action( 'wkafw_auction_created', $auction_id );
do_action( 'wkafw_auction_published', $auction_id );
do_action( 'wkafw_auction_started', $auction_id );
do_action( 'wkafw_auction_ending_soon', $auction_id, $minutes_left );
do_action( 'wkafw_auction_ended', $auction_id, $winner_id, $winning_bid );
do_action( 'wkafw_auction_paid', $auction_id, $order_id );
do_action( 'wkafw_auction_failed', $auction_id );
do_action( 'wkafw_auction_cancelled', $auction_id );
do_action( 'wkafw_auction_paused', $auction_id );
do_action( 'wkafw_auction_resumed', $auction_id );
apply_filters( 'wkafw_auction_winner', $winner_id, $auction_id );
apply_filters( 'wkafw_auction_should_extend', $should, $auction_id, $bid_id );
Anti-snipe {#anti-snipe}
do_action( 'wkafw_anti_snipe_triggered', $auction_id, $extension_seconds );
apply_filters( 'wkafw_anti_snipe_window', $window, $auction_id );
apply_filters( 'wkafw_anti_snipe_extension', $extension, $auction_id );
apply_filters( 'wkafw_anti_snipe_max_cap', $cap, $auction_id );
Auto-relist {#auto-relist}
do_action( 'wkafw_auction_relisted', $new_id, $original_id, $attempt );
do_action( 'wkafw_relist_attempts_exhausted', $auction_id );
apply_filters( 'wkafw_relist_eligible', $eligible, $auction_id );
apply_filters( 'wkafw_relist_params', $params, $auction_id, $attempt );
apply_filters( 'wkafw_relist_start_date', $start, $auction_id, $attempt );
apply_filters( 'wkafw_relist_reserve', $reserve, $auction_id, $attempt );
Watchlist {#watchlist}
do_action( 'wkafw_watch_added', $user_id, $auction_id );
do_action( 'wkafw_watch_removed', $user_id, $auction_id );
apply_filters( 'wkafw_auto_watch_on_bid', $auto, $user_id, $auction_id );
apply_filters( 'wkafw_show_watchers', $show, $auction_id );
apply_filters( 'wkafw_watcher_count', $count, $auction_id );
Wallet {#wallet}
do_action( 'wkafw_wallet_credited', $user_id, $amount, $reference );
do_action( 'wkafw_wallet_debited', $user_id, $amount, $reference );
do_action( 'wkafw_wallet_transfer', $sender, $recipient, $amount );
apply_filters( 'wkafw_wallet_balance', $balance, $user_id );
apply_filters( 'wkafw_wallet_can_partial_pay', $allowed, $user_id, $order );
apply_filters( 'wkafw_pre_charge_fee', $charged, $fee_args );
Wallet withdrawal {#wallet-withdrawal}
do_action( 'wkafw_wallet_withdrawal_requested', $request_id, $user_id, $amount );
do_action( 'wkafw_wallet_withdrawal_approved', $request_id );
do_action( 'wkafw_wallet_withdrawal_paid', $request_id );
do_action( 'wkafw_wallet_withdrawal_rejected', $request_id, $reason );
apply_filters( 'wkafw_wallet_withdrawal_can_request', $allowed, $user_id, $amount );
apply_filters( 'wkafw_wallet_withdrawal_methods', $methods, $user_id );
Auto-charge {#auto-charge}
apply_filters( 'wkafw_auto_charge_enabled', $enabled, $auction_id );
apply_filters( 'wkafw_auto_charge_amount', $amount, $auction_id, $user_id );
apply_filters( 'wkafw_auto_charge_partial', $allow, $auction_id, $user_id );
do_action( 'wkafw_auto_charge_succeeded', $auction_id, $user_id, $amount, $order_id );
do_action( 'wkafw_auto_charge_failed', $auction_id, $user_id, $reason );
Monetization {#monetization}
apply_filters( 'wkafw_listing_fee_amount', $amount, $auction_id );
apply_filters( 'wkafw_buyers_premium_amount', $amount, $bid_amount, $auction_id );
apply_filters( 'wkafw_bid_fee_amount', $amount, $auction_id, $user_id );
apply_filters( 'wkafw_late_penalty_amount', $amount, $order_id, $hours_late );
apply_filters( 'wkafw_seller_commission', $rate, $auction_id, $vendor_id );
do_action( 'wkafw_fee_charged', $fee_type, $amount, $user_id );
Auction types {#auction-types}
apply_filters( 'wkafw_auction_types', $types );
apply_filters( 'wkafw_auction_type_handler', $handler, $type );
apply_filters( 'wkafw_auction_type_fields', $fields, $type );
Multi-vendor {#multi-vendor}
apply_filters( 'wkafw_vendor_adapter', $adapter );
apply_filters( 'wkafw_vendor_commission_rate', $rate, $vendor_id, $auction_id );
do_action( 'wkafw_vendor_commission_recorded', $vendor_id, $auction_id, $amount );
do_action( 'wkafw_vendor_payout', $vendor_id, $amount );
apply_filters( 'wkafw_vendor_can_create_auction', $can, $vendor_id, $args );
User management {#user-management}
do_action( 'wkafw_user_blocked', $user_id, $reason, $expires_at );
do_action( 'wkafw_user_unblocked', $user_id );
apply_filters( 'wkafw_can_bid', $allowed, $user_id, $auction_id );
Lot review {#lot-review}
do_action( 'wkafw_lot_submitted', $auction_id, $vendor_id );
do_action( 'wkafw_lot_approved', $auction_id, $vendor_id );
do_action( 'wkafw_lot_rejected', $auction_id, $vendor_id, $reason );
apply_filters( 'wkafw_lot_review_required', $required, $auction_id, $vendor_id );
apply_filters( 'wkafw_lot_auto_approve', $auto, $auction_id, $vendor_id );
Disputes {#disputes}
do_action( 'wkafw_dispute_created', $dispute_id );
do_action( 'wkafw_dispute_status', $dispute_id, $old, $new );
do_action( 'wkafw_dispute_resolved', $dispute_id, $resolution );
do_action( 'wkafw_dispute_refund', $dispute_id, $amount );
Fraud detection {#fraud}
apply_filters( 'wkafw_fraud_rules', $rules );
apply_filters( 'wkafw_fraud_can_bid', $allowed, $user_id, $auction_id, $context );
do_action( 'wkafw_fraud_signal', $user_id, $rule, $payload );
do_action( 'wkafw_fraud_auto_block', $user_id, $rule );
Audit log {#audit-log}
do_action( 'wkafw_audit_log_recorded', $event_id, $event );
apply_filters( 'wkafw_audit_log_payload', $payload, $type, $action );
Notifications {#notifications}
apply_filters( 'wkafw_notification_channels', $channels, $user_id, $event );
apply_filters( 'wkafw_notification_should_send', $should, $user_id, $event );
do_action( 'wkafw_notification_sent', $user_id, $channel, $event );
Emails {#emails}
apply_filters( 'wkafw_email_recipients', $recipients, $email_id, $context );
apply_filters( 'wkafw_email_subject', $subject, $email_id, $context );
apply_filters( 'wkafw_email_should_send', $should, $email_id, $user_id );
do_action( 'wkafw_email_sent', $email_id, $user_id );
Twilio {#twilio}
apply_filters( 'wkafw_twilio_should_send', $should, $user_id, $event );
apply_filters( 'wkafw_twilio_template', $template, $event );
do_action( 'wkafw_twilio_sent', $sid, $user_id, $event );
do_action( 'wkafw_twilio_failed', $error, $user_id, $event );
Firebase {#firebase}
apply_filters( 'wkafw_firebase_should_push', $should, $user_id, $event );
apply_filters( 'wkafw_firebase_payload', $payload, $user_id, $event );
do_action( 'wkafw_firebase_pushed', $user_id, $event, $response );
CAPTCHA {#captcha}
apply_filters( 'wkafw_captcha_required', $required, $context );
apply_filters( 'wkafw_captcha_provider', $provider, $context );
apply_filters( 'wkafw_captcha_min_score', $score, $context );
do_action( 'wkafw_captcha_passed', $context, $user_id );
do_action( 'wkafw_captcha_failed', $context, $user_id, $reason );
Tracking & Marketing {#tracking}
apply_filters( 'wkafw_tracking_should_send', $should, $provider, $event, $user_id );
apply_filters( 'wkafw_tracking_payload', $payload, $provider, $event );
do_action( 'wkafw_tracking_sent', $provider, $event, $response );
Single auction page {#single-auction}
apply_filters( 'wkafw_single_auction_components', $components, $auction_id );
apply_filters( 'wkafw_bid_form_layout', $layout, $auction_id );
do_action( 'wkafw_before_bid_form', $auction_id );
do_action( 'wkafw_after_bid_form', $auction_id );
apply_filters( 'wkafw_show_bid_history', $show, $auction_id );
Customer endpoints {#customer-endpoints}
apply_filters( 'wkafw_my_auctions_tabs', $tabs );
apply_filters( 'wkafw_my_auctions_query_args', $args, $tab, $user_id );
do_action( 'wkafw_my_auctions_tab_*', $user_id ); // per-tab
Reports {#reports}
apply_filters( 'wkafw_reports_views', $views );
Tools {#tools}
apply_filters( 'wkafw_csv_field_mappings', $mappings );
do_action( 'wkafw_csv_import_started', $batch_id, $row_count );
do_action( 'wkafw_csv_import_done', $batch_id, $results );
do_action( 'wkafw_tool_run', $tool, $args, $result );
Design Studio {#design}
apply_filters( 'wkafw_design_tokens', $tokens );
apply_filters( 'wkafw_design_layout', $layout, $auction );
do_action( 'wkafw_design_saved', $design );
Builders {#builders}
apply_filters( 'wkafw_elementor_widgets', $widgets );
apply_filters( 'wkafw_gutenberg_blocks', $blocks );
apply_filters( 'wkafw_block_query_args', $args, $block_attrs );
Stripe {#stripe}
apply_filters( 'wkafw_stripe_charge_args', $args, $order );
apply_filters( 'wkafw_stripe_should_charge', $should, $auction_id );
do_action( 'wkafw_stripe_charge_succeeded', $charge_id, $auction_id );
do_action( 'wkafw_stripe_charge_failed', $error, $auction_id );
Payments {#payments}
apply_filters( 'wkafw_allowed_gateways', $allowed, $auction_id );
apply_filters( 'wkafw_payment_deadline_hours', $hours, $auction_id );
apply_filters( 'wkafw_should_use_escrow', $use_escrow, $auction_id, $bid_amount );
do_action( 'wkafw_payment_received', $order_id, $auction_id );
do_action( 'wkafw_payment_overdue', $order_id, $auction_id );
Events {#events}
do_action( 'wkafw_event_created', $event_id );
do_action( 'wkafw_event_started', $event_id );
do_action( 'wkafw_event_ended', $event_id );
do_action( 'wkafw_event_registered', $event_id, $user_id, $order_id );
do_action( 'wkafw_event_cancelled', $event_id );
Common usage patterns
Block bids based on a custom condition
add_filter( 'wkafw_pre_place_bid', function( $passed, $auction_id, $user_id, $amount ) {
if ( my_user_is_in_blacklist_country( $user_id ) ) {
return new WP_Error( 'country_blocked', 'Bidding not allowed from your country.' );
}
return $passed;
}, 10, 4 );
Send a Slack notification on every win
add_action( 'wkafw_auction_ended', function( $auction_id, $winner_id, $winning_bid ) {
if ( $winning_bid > 5000 ) {
my_slack_notify( "🏆 Winner of auction #{$auction_id}: {$winning_bid}" );
}
}, 10, 3 );
Override commission for a specific vendor
add_filter( 'wkafw_vendor_commission_rate', function( $rate, $vendor_id, $auction_id ) {
if ( $vendor_id == 12 ) return 5; // 5% for vendor 12
return $rate;
}, 10, 3 );
Add a custom column to the bids admin table
add_filter( 'wkafw_admin_bid_columns', function( $columns ) {
$columns['my_score'] = 'Risk Score';
return $columns;
} );
add_action( 'wkafw_admin_bid_column_my_score', function( $bid ) {
echo esc_html( my_compute_risk_score( $bid ) );
} );
