arraypress / edd-register-email-tags
A streamlined library for managing and registering custom email tags in Easy Digital Downloads (EDD), making email template customization more intuitive and maintainable.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
pkg:composer/arraypress/edd-register-email-tags
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2025-10-23 15:35:48 UTC
README
A PHP library for easy registration and management of Easy Digital Downloads (EDD) email tags, providing a fluent builder interface and robust tag handling. Features type safety, error handling, and context-aware tag processing.
Features
- 📧 Email Tag Management: Easily register and manage EDD email tags
- 🏗️ Fluent Builder Interface: Intuitive tag configuration with method chaining
- ⚡ WordPress Integration: Seamless integration with EDD's email system
- 🛡️ Type Safety: Full type hinting and strict types enforcement
- 🔄 Context Awareness: Support for context-specific tag processing
- 🎯 Recipient Filtering: Control tag visibility based on recipient types
- 🚦 Error Handling: Robust error handling with debug logging
- 🏭 Factory Pattern: Efficient tag creation and registration
- 🔌 Plugin Support: Easy integration with existing plugins
- ✨ Clean API: Simple and intuitive API design
Requirements
- PHP 7.4 or later
- WordPress 5.0 or later
- Easy Digital Downloads plugin
- Composer (for installation)
Installation
Install via Composer:
composer require arraypress/edd-email-tags
Basic Usage
use ArrayPress\EDD\Register\EmailTags; // Initialize the factory with your plugin file $tags = EmailTags::register( __FILE__ ); // Register a simple email tag $tags->tag( 'customer_name' ) ->description( 'The customer\'s full name' ) ->callback( function( $payment_id ) { $payment = edd_get_payment( $payment_id ); return $payment ? $payment->get_name() : ''; } ) ->register();
Extended Examples
Creating Tags with Custom Context
$tags->tag( 'subscription_status' ) ->description( 'The status of the subscription' ) ->label( 'Subscription Status' ) ->contexts( ['subscription', 'renewal'] ) ->callback( function( $email_object_id, $email_object = null, $email = null ) { return $email_object->get_status_label(); } ) ->register();
Adding Context-Aware Tags
$tags->tag( 'order_currency' ) ->description( 'The currency used for the order' ) ->contexts( ['order'] ) ->callback( function( $email_object_id, $email_object = null, $email = null ) { return $email_object->currency; } ) ->register();
Working with Multiple Tags
// Register multiple tags at once $tags->tag( 'customer_name' ) ->description( 'The customer\'s full name' ) ->callback( function( $email_object_id, $email_object = null, $email = null ) { return $email_object->get_name(); } ) ->register() ->tag( 'payment_status' ) ->description( 'The payment status' ) ->callback( function( $email_object_id, $email_object = null, $email = null ) { return $email_object->status_nicename; } ) ->register();
API Methods
EmailTags Factory Methods
register( string $file ): Create/get factory instance for a pluginget_by( string $file ): Get all registered tags for a plugintag( string $tag ): Create a new tag builderadd_tag( EmailTag $tag ): Add a tag to the factoryregister_tags(): Register all tags with EDD
TagBuilder Methods
description( string $description ): Set tag descriptionlabel( string $label ): Set tag labelcallback( callable $callback ): Set tag callbackcontexts( array $contexts ): Set allowed contextsrecipients( array $recipients ): Set allowed recipientsregister(): Build and register the tag
EmailTag Methods
get_tag(): Get tag identifierget_description(): Get tag descriptionget_label(): Get tag labelget_contexts(): Get allowed contextsget_recipients(): Get allowed recipientsget_callback(): Get wrapped callback functionget_raw_callback(): Get original unwrapped callback
Use Cases
- Order Information: Display order-specific details in emails
- Customer Data: Include customer information in notifications
- Subscription Details: Show subscription status and information
- Custom Notifications: Create specialized email content
- Admin Communications: Include admin-specific information
- Dynamic Content: Generate context-aware email content
- Conditional Display: Show content based on recipient type
- Payment Information: Include payment-specific details
- Product Details: Display purchased item information
- System Integration: Connect with other plugin systems
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GPL-2.0-or-later License.