Post Types Overview
Data Storage Approach: Unlike some plugins that create custom post types, the WooCommerce Products Wishlist plugin uses a lightweight approach by storing wishlist data directly in user meta fields and browser cookies. This method is more efficient and doesn’t clutter your WordPress database with additional post types.
No Custom Post Types
🗃️ Streamlined Data Storage
This plugin deliberately avoids creating custom post types for wishlist items. Instead, it uses WordPress’s built-in user meta system and browser cookies, which provides several advantages:
- Faster database queries and better performance
- Cleaner WordPress admin interface
- No database bloat from wishlist-specific tables
- Easier backup and migration processes
Data Storage Methods
👤 Registered Users: User Meta Storage
Storage Location: WordPress user_meta table
Meta Key: ‘woowishlist’
Data Format: Serialized array of product IDs
Benefits:
- Persistent across devices and sessions
- Backed up with regular WordPress backups
- Accessible through WordPress user management
- Survives theme and plugin changes
👥 Guest Users: Cookie Storage
Storage Location: Browser cookies
Cookie Management: JavaScript-based
Data Format: JSON array of product IDs
Benefits:
- No database impact for anonymous users
- Immediate functionality without registration
- Privacy-friendly approach
- Encourages eventual user registration
Database Integration
🔗 WooCommerce Product Integration
The plugin integrates seamlessly with existing WooCommerce data structures:
- Product Data: Uses standard WooCommerce product posts
- Product Information: Accesses existing product meta fields
- Stock Status: Reads from WooCommerce inventory system
- Pricing: Uses WooCommerce price calculation methods
- Images: Leverages WordPress attachment system
Meta Fields and Data Structure
📊 User Meta Structure
Meta Key: woowishlist
Data Type: Array
Example Value: [123, 456, 789] (product IDs)
Access Functions:
woowish_member_get_list()– Retrieve user’s wishlistwoowish_is_product_in_wishlist()– Check if product is saved- WordPress built-in
get_user_meta()andupdate_user_meta()
🍪 Cookie Data Structure
Cookie Name: Managed by plugin’s JavaScript
Data Format: JSON string
JavaScript Functions: Custom cookie management for guest users
Plugin Settings Storage
⚙️ WordPress Options Table
All plugin configuration is stored in WordPress’s options table:
- woowl_public: General settings
- woowl_single: Single product page settings
- woowl_archive: Archive page settings
- woowl_tablepage: Wishlist page settings
- woowl_style: Style and appearance settings
Migration and Compatibility
🔄 Data Portability
User Migration: Wishlist data moves with user accounts
Site Migration: Standard WordPress backup/restore includes all data
Theme Changes: Data remains intact when switching themes
Plugin Updates: User data preserved during plugin updates
Performance Implications
🚀 Optimized for Speed
By avoiding custom post types, the plugin offers several performance benefits:
- Faster Queries: Simple array lookups vs. complex post queries
- Reduced Database Load: No additional tables or complex relationships
- Minimal Memory Usage: Lightweight data structures
- Efficient Caching: Simple data is easier to cache effectively
Developer Information
🛠️ Technical Implementation
Primary Functions:
woowish_member_get_list()– Get user’s wishlist arraywoowish_is_product_in_wishlist($user_id, $product_id)– Check membershipkrn_get_option($option, $section, $default)– Get plugin settings
AJAX Handlers:
- Member add/remove: Updates user meta
- Guest add/remove: Updates cookies via JavaScript
- Table generation: Builds wishlist display