First Commit

This commit is contained in:
2025-08-28 19:35:28 -07:00
commit 264e65006a
488 changed files with 155661 additions and 0 deletions

219
README.md Normal file
View File

@@ -0,0 +1,219 @@
# WP Digital Download
A comprehensive WordPress plugin for creating a digital download marketplace where creators can sell digital products with PayPal integration.
## Features
### Core Functionality
- **Custom Post Type**: Products with rich metadata
- **User Roles**: Separate roles for customers and creators
- **File Management**: Secure file upload and protection
- **PayPal Integration**: Complete payment processing
- **Download Protection**: Secure, time-limited downloads
- **Watermarking**: Automatic watermarking for images and PDFs
- **Purchase History**: Customer account management
- **Admin Dashboard**: Complete order and sales management
### Key Components
#### Custom Post Types
- **wpdd_product**: Digital products with pricing, files, and settings
- **Product Categories & Tags**: Organization and filtering
- **Creator Attribution**: Products linked to their creators
#### User Management
- **Digital Customer Role**: Purchase and download permissions
- **Digital Creator Role**: Product management permissions
- **Admin Capabilities**: Full system management
#### Payment Processing
- **PayPal Integration**: Sandbox and live modes
- **Free Products**: No-payment downloads
- **Guest Checkout**: Optional account creation
- **Order Management**: Complete transaction tracking
#### File Protection
- **Protected Directory**: Files stored outside web root access
- **Secure Downloads**: Token-based download links
- **Download Limits**: Configurable per product
- **Expiry Dates**: Time-limited access
#### Watermarking
- **Image Watermarking**: PNG, JPG, GIF support
- **PDF Watermarking**: Text overlay on PDF files
- **Dynamic Content**: Customer info in watermarks
- **Configurable Settings**: Per-product control
## Installation
1. Upload the plugin files to `/wp-content/plugins/wp-digital-download/`
2. Activate the plugin through the WordPress admin
3. Configure PayPal settings in Digital Products > Settings
4. Create your first product
5. Add the shop shortcode `[wpdd_shop]` to a page
## Configuration
### PayPal Setup
1. Create a PayPal Developer account
2. Create a new application
3. Get Client ID and Secret
4. Configure in Settings > PayPal Settings
### Pages Setup
The plugin automatically creates these pages:
- **Shop**: `[wpdd_shop]` - Product listing
- **Checkout**: `[wpdd_checkout]` - Payment processing
- **My Purchases**: `[wpdd_customer_purchases]` - Customer downloads
- **Thank You**: `[wpdd_thank_you]` - Order confirmation
## Shortcodes
### Main Shortcodes
- `[wpdd_shop]` - Display product storefront
- `[wpdd_customer_purchases]` - Customer purchase history
- `[wpdd_checkout]` - Checkout form
- `[wpdd_thank_you]` - Thank you page
- `[wpdd_product id="123"]` - Single product display
### Shop Shortcode Options
```
[wpdd_shop columns="3" per_page="12" category="design" orderby="date" order="DESC" show_filters="yes"]
```
## Database Structure
### Tables Created
- `wp_wpdd_orders` - Purchase records
- `wp_wpdd_downloads` - Download tracking
- `wp_wpdd_download_links` - Secure download tokens
### Key Meta Fields
- `_wpdd_price` - Product price
- `_wpdd_sale_price` - Sale price
- `_wpdd_is_free` - Free product flag
- `_wpdd_files` - Associated files
- `_wpdd_download_limit` - Download restrictions
- `_wpdd_download_expiry` - Access duration
- `_wpdd_enable_watermark` - Watermark settings
- `_wpdd_sales_count` - Sales tracking
## File Structure
```
wp-digital-download/
├── wp-digital-download.php # Main plugin file
├── includes/ # Core functionality
│ ├── class-wpdd-install.php # Installation routines
│ ├── class-wpdd-post-types.php # Custom post types
│ ├── class-wpdd-roles.php # User roles
│ ├── class-wpdd-metaboxes.php # Product editing
│ ├── class-wpdd-shortcodes.php # Frontend display
│ ├── class-wpdd-paypal.php # Payment processing
│ ├── class-wpdd-download-handler.php # File delivery
│ ├── class-wpdd-customer.php # Customer management
│ ├── class-wpdd-orders.php # Order processing
│ ├── class-wpdd-file-protection.php # Security
│ ├── class-wpdd-watermark.php # Image processing
│ └── class-wpdd-ajax.php # AJAX handlers
├── admin/ # Admin interface
│ ├── class-wpdd-admin.php # Admin pages
│ └── class-wpdd-settings.php # Configuration
└── assets/ # Frontend resources
├── css/
│ ├── frontend.css # Public styling
│ └── admin.css # Admin styling
└── js/
├── frontend.js # Public scripts
├── admin.js # Admin scripts
└── paypal.js # Payment integration
```
## Hooks & Filters
### Actions
- `wpdd_order_completed` - Fired when order is completed
- `wpdd_download_started` - Before file delivery
- `wpdd_customer_registered` - New customer account
### Filters
- `wpdd_product_price` - Modify displayed price
- `wpdd_download_url` - Customize download URLs
- `wpdd_watermark_text` - Modify watermark content
- `wpdd_email_content` - Customize email templates
## Security Features
### File Protection
- Files stored in protected directory with .htaccess rules
- Token-based download authentication
- Time-limited access links
- IP and user agent logging
### Input Validation
- All user inputs sanitized
- Nonce verification on forms
- Capability checks for admin functions
- SQL injection prevention
### Payment Security
- PayPal webhook verification
- Transaction ID tracking
- Duplicate payment prevention
- Secure credential storage
## Customization
### Template Override
Create templates in your theme:
```
your-theme/
└── wpdd-templates/
├── single-product.php
├── shop.php
└── checkout.php
```
### CSS Customization
Override default styles:
```css
.wpdd-product-card {
/* Your custom styles */
}
```
### Adding Payment Methods
Extend payment options by hooking into:
```php
add_action('wpdd_payment_methods', 'add_stripe_payment');
```
## Requirements
- WordPress 5.0+
- PHP 7.4+
- MySQL 5.6+
- cURL extension
- GD library (for watermarking)
## Changelog
### Version 1.0.0
- Initial release
- PayPal integration
- File protection system
- Watermarking capabilities
- Customer management
- Admin dashboard
## Support
For support and feature requests, please create an issue in the GitHub repository.
## License
This plugin is licensed under the GPL v2 or later.
---
**Note**: This plugin handles financial transactions. Always test thoroughly in a development environment before deploying to production.