View Categories

Post Types Overview

3 min read

 

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 wishlist
  • woowish_is_product_in_wishlist() – Check if product is saved
  • WordPress built-in get_user_meta() and update_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 array
  • woowish_is_product_in_wishlist($user_id, $product_id) – Check membership
  • krn_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
Developer Note: If you need to access wishlist data programmatically, use the plugin’s built-in functions rather than directly querying user meta or cookies. This ensures compatibility with future plugin updates.