Aucteeno WP Registry grade C-. High-severity findings · 1 findingWP RegistryHigh-severity findings · 1 findingOpen the reportC-
Custom WooCommerce plugin for auction and item management with high-performance database tables and REST API for auction and item management.
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/the-another/aucteeno/releases/download/v1.9.0/aucteeno-1.9.0.zipAucteeno is a WordPress plugin that extends WooCommerce to provide comprehensive auction and item management functionality. It enables businesses to create, manage, and display auctions with associated items (lots) in a structured, high-performance environment.
What Aucteeno Does
Aucteeno transforms WooCommerce into a powerful auction management system by providing:
Core Functionality
- Auction Management: Create and manage auction events with custom metadata including bidding times, locations, terms, and conditions
- Item (Lot) Management: Organize items within auctions with lot numbers, descriptions, bidding information, and sale tracking
- Location-Based Organization: Structure auctions and items by geographic location using hierarchical location taxonomies (country, subdivision, city)
- Bidding Status Tracking: Track auction and item statuses (upcoming, running, expired) through custom taxonomies
- Custom Permalinks: Clean URL structures for auctions (
/auction/{slug}/) and items (/auction/{auction-slug}/item/{item-slug}/) - REST API: Full REST API endpoints for programmatic access to auction and item data
- Gutenberg Blocks: Ready-to-use blocks for displaying auction listings, item listings, and individual cards
- High-Performance Queries: Optimized database tables for fast filtering, sorting, and querying of auctions and items
Key Features
- Parent-Child Relationships: Items are linked to their parent auctions, maintaining hierarchical organization
- Time-Based Bidding: Support for bidding start and end times with timezone handling
- Location Hierarchies: Multi-level location organization (country → subdivision → city)
- Custom Product Types: Extends WooCommerce with two new product types:
aucteeno-ext-auctionandaucteeno-ext-item - Admin Interface: Custom product tabs and fields for managing auction and item data
- Fragment Rendering: HTML fragment rendering for AJAX-powered listings
- Query Optimization: Custom query ordering system for efficient database queries
Requirements
- WordPress 6.9 or higher
- WooCommerce (latest version recommended)
- PHP 8.3 or higher
Installation
- Upload the plugin files to
/wp-content/plugins/aucteeno/ - Activate the plugin through the WordPress admin panel
- The plugin will automatically create necessary database tables on activation
Hooks Reference
Aucteeno provides extensive WordPress hooks for developers to extend and customize functionality. All hooks are managed through the plugin's Hook_Manager class for centralized tracking and easy deregistration.
Product Tab Hooks
These hooks allow customization of the Aucteeno product data tab in the WooCommerce admin:
Filters
-
aucteeno_product_panel_tabs- Modify or add tabs within the Aucteeno product panel- Parameters:
$tabs(array),$post_id(int),$post_type(string) - Returns: Array of tab keys and labels
- Parameters:
-
aucteeno_product_tab_classes- Modify CSS classes applied to tab links- Parameters:
$classes(array) - Returns: Array of CSS class strings
- Parameters:
Actions
-
aucteeno_product_tab_link- Render content for the "Link" tab- Parameters:
$post_id(int),$post_type(string)
- Parameters:
-
aucteeno_product_tab_location- Render content for the "Location" tab- Parameters:
$post_id(int),$post_type(string)
- Parameters:
-
aucteeno_product_tab_times- Render content for the "Times" tab- Parameters:
$post_id(int),$post_type(string)
- Parameters:
-
aucteeno_product_tab_details- Render content for the "Details" tab- Parameters:
$post_id(int),$post_type(string)
- Parameters:
-
aucteeno_product_tab_{$tab_key}- Dynamic action hook for custom tabs- Parameters:
$post_id(int),$post_type(string) - Replace
{$tab_key}with your custom tab key
- Parameters:
WooCommerce Integration Hooks
woocommerce_product_class- Filter product class names for custom product typeswoocommerce_data_stores- Register custom datastores for auction and item product typeswoocommerce_product_data_tabs- Add the Aucteeno tab to product data tabswoocommerce_product_data_panels- Render the Aucteeno product panelwoocommerce_process_product_meta- Save custom product meta data
Product Type Registration Hooks
product_type_selector- Add auction and item product types to the selectorwoocommerce_product_type_options- Add product type optionswoocommerce_product_after_variable_attributes- Handle variable product attributeswoocommerce_save_product_variation- Save product variation data
Permalink Hooks
query_vars- Register custom query variables for auction and item slugspost_type_link- Filter permalink generation for auction and item productspre_handle_404- Prevent premature 404 errors for custom permalinkstemplate_redirect- Validate item URLs and enforce 404 on mismatch
Query and Ordering Hooks
pre_get_posts- Apply custom ordering to queries (priority 20)found_posts- Adjust found posts count for custom queries
Admin Hooks
admin_menu- Add settings page to admin menuadmin_init- Register settings and handle admin initializationsave_post_product- Handle product save operationswp_trash_post- Handle product trashinguntrash_post- Handle product restorationbefore_delete_post- Handle product deletion
REST API Hooks
The plugin registers REST API routes under the aucteeno/v1 namespace:
GET /wp-json/aucteeno/v1/auctions- List auctionsGET /wp-json/aucteeno/v1/auctions/{id}- Get single auctionPOST /wp-json/aucteeno/v1/auctions- Create auctionPUT /wp-json/aucteeno/v1/auctions/{id}- Update auctionDELETE /wp-json/aucteeno/v1/auctions/{id}- Delete auctionGET /wp-json/aucteeno/v1/items- List itemsGET /wp-json/aucteeno/v1/items/{id}- Get single itemPOST /wp-json/aucteeno/v1/items- Create itemPUT /wp-json/aucteeno/v1/items/{id}- Update itemDELETE /wp-json/aucteeno/v1/items/{id}- Delete itemGET /wp-json/aucteeno/v1/locations- Get location terms
Breadcrumb Hooks
woocommerce_breadcrumb_defaults- Filter breadcrumb defaults for auction and item products
Block Registration Hooks
block_categories_all- Register the Aucteeno block category
HPS (High Performance Storage) System
Aucteeno implements a High Performance Storage (HPS) system to optimize database queries for auctions and items. This system maintains synchronized copies of critical product data in dedicated database tables, enabling fast queries without complex joins across WordPress post and meta tables.
How HPS Works
The HPS system automatically syncs auction and item product data to two custom database tables:
wp_aucteeno_auctions- Stores auction-specific datawp_aucteeno_items- Stores item-specific data
Data Synchronization
The HPS system automatically synchronizes data when:
- Product Created/Updated: When an auction or item product is saved, its data is automatically synced to the HPS table
- Product Trashed: When a product is moved to trash, it's removed from the HPS table
- Product Restored: When a product is restored from trash, it's re-added to the HPS table
- Product Deleted: When a product is permanently deleted, it's removed from the HPS table
HPS Table Structure
Auctions Table (wp_aucteeno_auctions)
Stores denormalized auction data including:
auction_id- Reference to the WordPress post IDbidding_status- Numeric status (10=publish, 20=schedule, 30=expire)bidding_starts_at- Unix timestamp for bidding start timebidding_ends_at- Unix timestamp for bidding end timelocation_country- Two-letter country codelocation_subdivision- Subdivision code (format:COUNTRY:SUBDIVISION)location_city- City namelocation_lat/location_lng- Geographic coordinates (reserved for future use)
Items Table (wp_aucteeno_items)
Stores denormalized item data including:
item_id- Reference to the WordPress post IDauction_id- Reference to parent auction post IDbidding_status- Inherited from parent auctionbidding_starts_at- Unix timestamp for bidding start timebidding_ends_at- Unix timestamp for bidding end timelot_no- Lot number stringlot_sort_key- Numeric key for sorting lotslocation_country- Two-letter country code (inherited from auction if not set)location_subdivision- Subdivision codelocation_city- City name (inherited from auction if not set)location_lat/location_lng- Geographic coordinates (reserved for future use)
Benefits of HPS
- Performance: Queries can filter and sort by bidding status, dates, and locations without complex joins
- Indexing: Optimized indexes on frequently queried columns (status, dates, locations)
- Scalability: Handles large numbers of auctions and items efficiently
- Query Optimization: Composite indexes support common query patterns (e.g., running auctions by location, items ending soon)
HPS Sync Handler
The HPS_Sync_Handler class manages the synchronization process by hooking into WordPress lifecycle events:
save_post(priority 20) - Syncs on product savebefore_delete_post(priority 10) - Removes on permanent deletionwp_trash_post(priority 10) - Removes on trashinguntrash_post(priority 10) - Re-syncs on restoration
Query Orderer Integration
The HPS tables work in conjunction with the Query_Orderer class, which intercepts WordPress queries and applies custom ordering logic when querying auctions or items. This allows the plugin to leverage HPS table indexes for optimal performance.
Development
Code Structure
includes/- Core plugin classesadmin/- Admin interface componentsdatabase/- Database management and HPS tablesproduct-types/- Custom WooCommerce product typesrest-api/- REST API endpointsservices/- Service classes including HPS sync handlerstaxonomies/- Custom taxonomies
blocks/- Gutenberg block definitionstemplates/- PHP templates for renderingassets/- CSS and JavaScript files
Testing
The plugin includes PHPUnit tests. Run tests with:
make test
Code Standards
The plugin follows WordPress Coding Standards and uses PHPCS for code quality checks.
License
GPL v2 or later
Support
- Issues: GitHub Issues
- Source: GitHub Repository
- Homepage: Plugin Homepage
Releases
Newest 25 of 27 recorded releases. Each count is every asset in that release; expand a row for the breakdown.
Active-site estimate ≈10 comes from the median of recent superseded releases. Method.