Overview

LionWP plugins are built with extensibility in mind. All our plugins provide numerous action and filter hooks that allow developers to customize and extend functionality without modifying core plugin files.

📱 Lion Social Share v1.0.4

Social sharing with 35+ platforms and extensive customization hooks

🔒 Lion GDPR Coming Soon

GDPR compliance with consent management and privacy tools

🚧 Lion Under Construction Coming Soon

Maintenance pages with email collection and launch notifications

Universal System: All LionWP plugins follow the same hook naming conventions and patterns for consistency across your development workflow.

Hook Naming Patterns

All LionWP plugins follow consistent naming patterns that make it easy to predict and use hooks across our entire plugin ecosystem.

Standard Patterns

Hook Naming Convention
// Action Hook Pattern
lionwp_{plugin_name}_{timing}_{component}

// Filter Hook Pattern  
lionwp_{plugin_name}_{data_type}

// Examples:
lionwp_social_share_before_buttons     // Action
lionwp_social_share_after_buttons      // Action
lionwp_social_share_platforms          // Filter
lionwp_social_share_settings           // Filter

lionwp_gdpr_before_notice             // Action (coming soon)
lionwp_gdpr_consent_options           // Filter (coming soon)

lionwp_construction_before_page       // Action (coming soon)
lionwp_construction_email_settings    // Filter (coming soon)
Future-Proof: This consistent pattern means you can predict hook names for new LionWP plugins before they're even released!

Action Hooks

Action hooks allow you to execute custom code at specific points in plugin execution. All LionWP plugins provide "before" and "after" actions for their main functions.

lionwp_{plugin_name}_before_{component}
Action Pattern
Universal pattern for executing code before main plugin functionality across all LionWP plugins
Common Parameters
Parameter Type Description
$context_id int ID of current context (post ID, page ID, etc.)
$settings array Plugin settings and configuration
$instance_data array Instance-specific data (widget, shortcode, etc.)
Universal Examples
PHP
// Social Share: Add content before buttons
function my_before_social_buttons($post_id, $settings, $instance) {
    echo '<div class="custom-intro">Share this content:</div>';
}
add_action('lionwp_social_share_before_buttons', 'my_before_social_buttons', 10, 3);

// GDPR: Add content before consent notice (coming soon)
function my_before_gdpr_notice($context_id, $settings, $instance) {
    echo '<div class="privacy-intro">Your privacy matters to us</div>';
}
add_action('lionwp_gdpr_before_notice', 'my_before_gdpr_notice', 10, 3);

// Under Construction: Add content before maintenance page (coming soon)  
function my_before_construction_page($page_id, $settings, $instance) {
    if ($settings['show_logo']) {
        echo '<div class="custom-logo">' . get_custom_logo() . '</div>';
    }
}
add_action('lionwp_construction_before_page', 'my_before_construction_page', 10, 3);
lionwp_{plugin_name}_after_{component}
Action Pattern
Universal pattern for executing code after main plugin functionality completes
Universal Examples
PHP
// Social Share: Track button displays
function track_social_display($post_id, $platform_count, $instance) {
    // Send to analytics
    wp_remote_post('https://analytics.example.com/track', array(
        'body' => array(
            'event' => 'social_buttons_displayed',
            'post_id' => $post_id,
            'platforms' => $platform_count
        )
    ));
}
add_action('lionwp_social_share_after_buttons', 'track_social_display', 10, 3);

// GDPR: Log consent notice display (coming soon)
function log_gdpr_notice_shown($context_id, $notice_type, $instance) {
    error_log("GDPR notice shown: {$notice_type} on context {$context_id}");
}
add_action('lionwp_gdpr_after_notice', 'log_gdpr_notice_shown', 10, 3);

// Under Construction: Track page views (coming soon)
function track_construction_view($page_id, $visitor_data, $instance) {
    $views = get_option('construction_page_views', 0);
    update_option('construction_page_views', $views + 1);
}
add_action('lionwp_construction_after_page', 'track_construction_view', 10, 3);
lionwp_{plugin_name}_{interaction}_triggered
Action Pattern
Fires when users interact with plugin elements (clicks, form submissions, consent actions)
JavaScript Integration: Some interaction hooks use AJAX for real-time tracking and immediate response.
Interaction Examples
PHP
// Universal interaction tracker for all LionWP plugins
function track_lionwp_interactions($interaction_type, $context_id, $data, $user_id = 0) {
    $user_id = $user_id ?: get_current_user_id();
    
    // Log to database
    global $wpdb;
    $wpdb->insert(
        $wpdb->prefix . 'lionwp_interactions',
        array(
            'plugin' => $data['plugin'] ?? 'unknown',
            'interaction' => $interaction_type,
            'context_id' => $context_id,
            'user_id' => $user_id,
            'data' => json_encode($data),
            'timestamp' => current_time('mysql')
        )
    );
}

// Apply to all current and future LionWP plugins
add_action('lionwp_social_share_button_clicked', 'track_lionwp_interactions', 10, 4);
add_action('lionwp_gdpr_consent_given', 'track_lionwp_interactions', 10, 4);
add_action('lionwp_gdpr_consent_withdrawn', 'track_lionwp_interactions', 10, 4);
add_action('lionwp_construction_email_submitted', 'track_lionwp_interactions', 10, 4);

Filter Hooks

Filter hooks allow you to modify data before it's processed or displayed. All LionWP plugins provide filters for settings, content, and data arrays.

lionwp_{plugin_name}_settings
Filter Pattern
Universal pattern for modifying plugin settings across all LionWP plugins
Universal Settings Filter
PHP
// Universal settings modifier for all LionWP plugins
function customize_lionwp_settings($settings, $context, $plugin_name = '') {
    // Add universal branding
    $settings['show_lionwp_credit'] = get_option('lionwp_show_credits', false);
    
    // Add universal analytics
    $settings['track_interactions'] = get_option('lionwp_analytics_enabled', true);
    
    // Context-specific modifications
    switch ($context) {
        case 'widget':
            $settings['lazy_load'] = true;
            break;
        case 'shortcode':
            $settings['cache_enabled'] = true;
            break;
        case 'auto':
            $settings['respect_user_preferences'] = true;
            break;
    }
    
    // Plugin-specific customizations
    if ($plugin_name === 'social_share') {
        // Different platforms for different post types
        if (is_singular('product')) {
            $settings['platforms'] = array('facebook', 'pinterest', 'email');
        }
    }
    
    return $settings;
}

// Apply to all LionWP plugins
add_filter('lionwp_social_share_settings', 'customize_lionwp_settings', 10, 3);
add_filter('lionwp_gdpr_settings', 'customize_lionwp_settings', 10, 3);
add_filter('lionwp_construction_settings', 'customize_lionwp_settings', 10, 3);
lionwp_{plugin_name}_{element}_html
Filter Pattern
Universal pattern for modifying HTML output before display
HTML Enhancement Examples
PHP
// Universal HTML enhancer for all LionWP plugins
function enhance_lionwp_html($html, $context, $data = array()) {
    // Add universal accessibility attributes
    $html = str_replace('<a ', '<a role="button" ', $html);
    $html = str_replace('<button ', '<button type="button" ', $html);
    
    // Add schema markup
    if (strpos($html, 'social-share') !== false) {
        $html = str_replace(
            '<div class="lionwp-social',
            '<div itemscope itemtype="http://schema.org/ShareAction" class="lionwp-social',
            $html
        );
    }
    
    // Add tracking attributes
    if (isset($data['track']) && $data['track']) {
        $html = str_replace('<a ', '<a data-track="lionwp-interaction" ', $html);
    }
    
    // Add custom CSS classes
    $custom_class = get_option('lionwp_custom_css_class', '');
    if ($custom_class) {
        $html = str_replace('class="', 'class="' . esc_attr($custom_class) . ' ', $html);
    }
    
    return $html;
}

// Apply to all LionWP plugin HTML outputs
add_filter('lionwp_social_share_button_html', 'enhance_lionwp_html', 10, 3);
add_filter('lionwp_gdpr_notice_html', 'enhance_lionwp_html', 10, 3);
add_filter('lionwp_construction_page_html', 'enhance_lionwp_html', 10, 3);
lionwp_{plugin_name}_{data_type}_data
Filter Pattern
Universal pattern for modifying data arrays (platforms, options, configurations)
Data Customization Examples
PHP
// Add custom platforms to Social Share
function add_business_platforms($platforms, $context_id) {
    // Add Slack for team sharing
    $platforms['slack'] = array(
        'name' => 'Slack',
        'icon' => 'fab fa-slack',
        'url' => 'https://slack.com/share?url={url}&title={title}',
        'color' => '#4A154B',
        'category' => 'business'
    );
    
    // Add Microsoft Teams
    $platforms['teams'] = array(
        'name' => 'Microsoft Teams',
        'icon' => 'fab fa-microsoft',
        'url' => 'https://teams.microsoft.com/share?href={url}&title={title}',
        'color' => '#6264A7',
        'category' => 'business'
    );
    
    return $platforms;
}
add_filter('lionwp_social_share_platforms_data', 'add_business_platforms', 10, 2);

// Add custom GDPR consent options (coming soon)
function add_custom_consent_options($options, $context_id) {
    $options['marketing_analytics'] = array(
        'label' => 'Marketing Analytics',
        'description' => 'Help us improve our marketing with anonymous usage data',
        'required' => false,
        'default' => false,
        'category' => 'marketing'
    );
    
    $options['personalization'] = array(
        'label' => 'Content Personalization',
        'description' => 'Customize content based on your preferences',
        'required' => false,
        'default' => true,
        'category' => 'functional'
    );
    
    return $options;
}
add_filter('lionwp_gdpr_consent_options_data', 'add_custom_consent_options', 10, 2);

// Add custom construction page templates (coming soon)
function add_construction_templates($templates, $context_id) {
    $templates['corporate'] = array(
        'name' => 'Corporate',
        'description' => 'Professional business template',
        'preview' => 'corporate-preview.jpg',
        'features' => array('countdown', 'email_signup', 'social_links')
    );
    
    return $templates;
}
add_filter('lionwp_construction_templates_data', 'add_construction_templates', 10, 2);

Plugin-Specific Examples

Social Share Plugin

Complete Social Share Customization
/**
 * Complete Social Share Plugin Customization
 */
class My_Social_Share_Customization {
    
    public function __construct() {
        // Hook into all social share actions and filters
        add_action('lionwp_social_share_before_buttons', array($this, 'add_share_intro'), 10, 3);
        add_action('lionwp_social_share_after_buttons', array($this, 'add_share_credits'), 10, 3);
        add_action('lionwp_social_share_button_clicked', array($this, 'track_shares'), 10, 4);
        
        add_filter('lionwp_social_share_platforms_data', array($this, 'customize_platforms'), 10, 2);
        add_filter('lionwp_social_share_settings', array($this, 'modify_settings'), 10, 3);
        add_filter('lionwp_social_share_button_html', array($this, 'enhance_buttons'), 10, 3);
    }
    
    /**
     * Add introduction text before buttons
     */
    public function add_share_intro($post_id, $settings, $instance) {
        $post_type = get_post_type($post_id);
        
        switch ($post_type) {
            case 'product':
                echo '<div class="share-intro">Love this product? Share it with friends!</div>';
                break;
            case 'post':
                echo '<div class="share-intro">Found this article helpful? Spread the word!</div>';
                break;
            default:
                echo '<div class="share-intro">Share this with your network:</div>';
        }
    }
    
    /**
     * Add custom content after buttons
     */
    public function add_share_credits($post_id, $platform_count, $instance) {
        echo '<div class="share-credits">Thanks for sharing! ❤️</div>';
    }
    
    /**
     * Track social shares
     */
    public function track_shares($platform, $post_id, $url, $user_id) {
        // Update post meta
        $share_count = get_post_meta($post_id, '_total_shares', true) ?: 0;
        update_post_meta($post_id, '_total_shares', $share_count + 1);
        
        // Track by platform
        $platform_count = get_post_meta($post_id, "_shares_{$platform}", true) ?: 0;
        update_post_meta($post_id, "_shares_{$platform}", $platform_count + 1);
        
        // Send to analytics
        if (function_exists('gtag')) {
            echo "<script>gtag('event', 'share', {'content_type': 'post', 'content_id': '{$post_id}', 'method': '{$platform}'});</script>";
        }
    }
    
    /**
     * Customize available platforms
     */
    public function customize_platforms($platforms, $context_id) {
        // Add business platforms
        $platforms['discord'] = array(
            'name' => 'Discord',
            'icon' => 'fab fa-discord',
            'url' => 'https://discord.com/channels/@me?message={url}',
            'color' => '#5865F2'
        );
        
        // Remove platforms for certain post types
        if (get_post_type($context_id) === 'private_post') {
            unset($platforms['twitter'], $platforms['facebook']);
        }
        
        return $platforms;
    }
    
    /**
     * Modify settings based on context
     */
    public function modify_settings($settings, $context, $plugin_name) {
        // Different styles for different contexts
        if ($context === 'widget') {
            $settings['size'] = 'small';
            $settings['show_labels'] = false;
        }
        
        // Mobile-specific settings
        if (wp_is_mobile()) {
            $settings['platforms'] = array('whatsapp', 'facebook', 'twitter', 'email');
        }
        
        return $settings;
    }
    
    /**
     * Enhance button HTML
     */
    public function enhance_buttons($html, $context, $data) {
        // Add custom data attributes
        $post_id = get_the_ID();
        $html = str_replace('<a ', "<a data-post-id=\"{$post_id}\" ", $html);
        
        // Add loading states
        $html = str_replace('<a ', '<a onclick="this.style.opacity=0.5" ', $html);
        
        return $html;
    }
}

// Initialize the customization
new My_Social_Share_Customization();

Universal Plugin Handler

Universal LionWP Plugin Handler
/**
 * Universal handler that works with all LionWP plugins
 * Automatically adapts to new plugins as they're released
 */
class Universal_LionWP_Handler {
    
    private $supported_plugins = array(
        'social_share' => 'LionWP_Social_Share',
        'gdpr' => 'LionWP_GDPR', 
        'construction' => 'LionWP_Construction'
    );
    
    public function __construct() {
        // Auto-detect and hook into active LionWP plugins
        $this->auto_hook_plugins();
        
        // Universal admin settings
        add_action('admin_init', array($this, 'register_universal_settings'));
    }
    
    /**
     * Automatically hook into all active LionWP plugins
     */
    private function auto_hook_plugins() {
        foreach ($this->supported_plugins as $plugin_key => $class_name) {
            if (class_exists($class_name)) {
                $this->hook_plugin($plugin_key);
            }
        }
    }
    
    /**
     * Hook into a specific plugin
     */
    private function hook_plugin($plugin_key) {
        // Universal before/after actions
        add_action("lionwp_{$plugin_key}_before_buttons", array($this, 'universal_before_handler'), 10, 3);
        add_action("lionwp_{$plugin_key}_after_buttons", array($this, 'universal_after_handler'), 10, 3);
        
        // Universal interaction tracking
        $interaction_hooks = array(
            'button_clicked', 'consent_given', 'consent_withdrawn', 
            'email_submitted', 'form_submitted'
        );
        
        foreach ($interaction_hooks as $interaction) {
            add_action("lionwp_{$plugin_key}_{$interaction}", array($this, 'universal_interaction_handler'), 10, 4);
        }
        
        // Universal filters
        add_filter("lionwp_{$plugin_key}_settings", array($this, 'universal_settings_filter'), 10, 3);
        add_filter("lionwp_{$plugin_key}_html", array($this, 'universal_html_filter'), 10, 3);
    }
    
    /**
     * Universal before handler
     */
    public function universal_before_handler($context_id, $settings, $instance) {
        // Add universal CSS class
        echo '<div class="lionwp-enhanced" data-plugin="' . $this->get_current_plugin() . '">';
        
        // Add universal tracking
        $this->track_display($context_id, $settings);
    }
    
    /**
     * Universal after handler  
     */
    public function universal_after_handler($context_id, $data, $instance) {
        // Close universal wrapper
        echo '</div><!-- .lionwp-enhanced -->';
        
        // Add universal footer
        if (get_option('lionwp_show_credits', false)) {
            echo '<div class="lionwp-credits">Powered by LionWP</div>';
        }
    }
    
    /**
     * Universal interaction handler
     */
    public function universal_interaction_handler($type, $context_id, $data, $user_id = 0) {
        $plugin = $this->get_current_plugin();
        
        // Log all interactions
        error_log("LionWP Interaction: {$plugin} - {$type} - Context: {$context_id}");
        
        // Send to analytics service
        $this->send_to_analytics($plugin, $type, $context_id, $data);
        
        // Update user interaction count
        $this->update_user_interactions($user_id ?: get_current_user_id());
    }
    
    /**
     * Universal settings filter
     */
    public function universal_settings_filter($settings, $context, $plugin_name) {
        // Add universal performance settings
        $settings['lazy_load'] = get_option('lionwp_lazy_load', true);
        $settings['cache_enabled'] = get_option('lionwp_cache_enabled', true);
        
        // Add universal branding
        $settings['show_lionwp_credit'] = get_option('lionwp_show_credits', false);
        
        // Add universal analytics
        $settings['track_interactions'] = get_option('lionwp_analytics_enabled', true);
        
        return $settings;
    }
    
    /**
     * Universal HTML filter
     */
    public function universal_html_filter($html, $context, $data) {
        // Add universal accessibility
        $html = $this->add_accessibility_attributes($html);
        
        // Add universal tracking
        $html = $this->add_tracking_attributes($html);
        
        // Add universal styling
        $html = $this->add_universal_classes($html);
        
        return $html;
    }
    
    /**
     * Get current plugin from action/filter name
     */
    private function get_current_plugin() {
        $current_filter = current_filter();
        foreach ($this->supported_plugins as $plugin_key => $class_name) {
            if (strpos($current_filter, "lionwp_{$plugin_key}_") === 0) {
                return $plugin_key;
            }
        }
        return 'unknown';
    }
    
    /**
     * Track display events
     */
    private function track_display($context_id, $settings) {
        $displays = get_option('lionwp_displays_count', 0);
        update_option('lionwp_displays_count', $displays + 1);
    }
    
    /**
     * Send data to analytics service
     */
    private function send_to_analytics($plugin, $type, $context_id, $data) {
        // Implement your analytics logic here
        // Could be Google Analytics, custom service, etc.
    }
    
    /**
     * Update user interaction statistics
     */
    private function update_user_interactions($user_id) {
        if ($user_id) {
            $count = get_user_meta($user_id, 'lionwp_interactions', true) ?: 0;
            update_user_meta($user_id, 'lionwp_interactions', $count + 1);
        }
    }
    
    /**
     * Add accessibility attributes to HTML
     */
    private function add_accessibility_attributes($html) {
        $html = str_replace('<a ', '<a role="button" ', $html);
        $html = str_replace('<button ', '<button type="button" ', $html);
        return $html;
    }
    
    /**
     * Add tracking attributes to HTML
     */
    private function add_tracking_attributes($html) {
        if (get_option('lionwp_analytics_enabled', true)) {
            $html = str_replace('<a ', '<a data-track="lionwp-interaction" ', $html);
        }
        return $html;
    }
    
    /**
     * Add universal CSS classes
     */
    private function add_universal_classes($html) {
        $custom_class = get_option('lionwp_custom_css_class', '');
        if ($custom_class) {
            $html = str_replace('class="', 'class="' . esc_attr($custom_class) . ' ', $html);
        }
        return $html;
    }
    
    /**
     * Register universal admin settings
     */
    public function register_universal_settings() {
        register_setting('lionwp_universal', 'lionwp_analytics_enabled');
        register_setting('lionwp_universal', 'lionwp_show_credits');
        register_setting('lionwp_universal', 'lionwp_lazy_load');
        register_setting('lionwp_universal', 'lionwp_cache_enabled');
        register_setting('lionwp_universal', 'lionwp_custom_css_class');
    }
}

// Initialize universal handler
new Universal_LionWP_Handler();

Best Practices

Universal Approach: All LionWP plugins follow the same patterns, so you can write code once and apply it across our entire ecosystem.

Safety & Security

Secure Hook Implementation
// Always check if plugins are active before using hooks
function safe_lionwp_customization() {
    // Check for specific plugin classes
    $active_plugins = array();
    
    if (class_exists('LionWP_Social_Share')) {
        $active_plugins[] = 'social_share';
    }
    if (class_exists('LionWP_GDPR')) {
        $active_plugins[] = 'gdpr';
    }
    if (class_exists('LionWP_Construction')) {
        $active_plugins[] = 'construction';
    }
    
    // Only add hooks for active plugins
    foreach ($active_plugins as $plugin) {
        add_action("lionwp_{$plugin}_before_buttons", 'my_custom_function', 10, 3);
    }
}
add_action('plugins_loaded', 'safe_lionwp_customization');

// Secure data handling
function secure_lionwp_handler($user_input, $context_id, $settings) {
    // Validate all inputs
    if (!is_numeric($context_id) || $context_id < 1) {
        return false;
    }
    
    // Sanitize user data
    $user_input = sanitize_text_field($user_input);
    
    // Check permissions
    if (!current_user_can('read')) {
        return false;
    }
    
    // Verify nonces for forms
    if (isset($_POST['lionwp_nonce'])) {
        if (!wp_verify_nonce($_POST['lionwp_nonce'], 'lionwp_action')) {
            wp_die('Security check failed');
        }
    }
    
    return true;
}

Performance Optimization

Performance Best Practices
// Conditional loading - only load where needed
function conditional_lionwp_hooks() {
    // Only on single posts and pages
    if (is_singular()) {
        add_action('lionwp_social_share_before_buttons', 'my_social_function', 10, 3);
    }
    
    // Only for logged-in users
    if (is_user_logged_in()) {
        add_filter('lionwp_gdpr_settings', 'modify_gdpr_for_users', 10, 3);
    }
    
    // Only on specific post types
    if (is_singular('product')) {
        add_filter('lionwp_social_share_platforms_data', 'add_ecommerce_platforms', 10, 2);
    }
}
add_action('template_redirect', 'conditional_lionwp_hooks');

// Cache expensive operations
function cached_lionwp_data($context_id) {
    $cache_key = "lionwp_data_{$context_id}";
    $cached_data = wp_cache_get($cache_key, 'lionwp');
    
    if (false === $cached_data) {
        // Expensive operation here
        $cached_data = expensive_data_operation($context_id);
        
        // Cache for 1 hour
        wp_cache_set($cache_key, $cached_data, 'lionwp', 3600);
    }
    
    return $cached_data;
}

// Minimize database queries
function optimized_lionwp_tracking($interactions) {
    // Batch multiple interactions
    static $batch = array();
    $batch[] = $interactions;
    
    // Process in batches of 10
    if (count($batch) >= 10) {
        global $wpdb;
        
        $values = array();
        foreach ($batch as $interaction) {
            $values[] = $wpdb->prepare(
                "(%s, %d, %s, %s)",
                $interaction['type'],
                $interaction['context_id'],
                $interaction['data'],
                current_time('mysql')
            );
        }
        
        $wpdb->query(
            "INSERT INTO {$wpdb->prefix}lionwp_interactions 
             (type, context_id, data, timestamp) VALUES " . implode(',', $values)
        );
        
        $batch = array(); // Clear batch
    }
}

Future Compatibility

Future-Proof Code: Write your customizations to automatically work with new LionWP plugins as they're released.
Future-Compatible Development
// Auto-detect new LionWP plugins
function auto_hook_lionwp_plugins() {
    $plugin_classes = array(
        'LionWP_Social_Share' => 'social_share',
        'LionWP_GDPR' => 'gdpr', 
        'LionWP_Construction' => 'construction',
        'LionWP_SEO' => 'seo',              // Future plugin
        'LionWP_Security' => 'security',     // Future plugin
        'LionWP_Analytics' => 'analytics'    // Future plugin
    );
    
    foreach ($plugin_classes as $class => $plugin_key) {
        if (class_exists($class)) {
            // Auto-hook common patterns
            add_action("lionwp_{$plugin_key}_before_buttons", 'universal_before_handler', 10, 3);
            add_action("lionwp_{$plugin_key}_after_buttons", 'universal_after_handler', 10, 3);
            add_filter("lionwp_{$plugin_key}_settings", 'universal_settings_filter', 10, 3);
        }
    }
}
add_action('plugins_loaded', 'auto_hook_lionwp_plugins');

// Universal function naming
function mytheme_lionwp_customization($data, $context, $plugin = '') {
    // This function works with all current and future LionWP plugins
    // because it follows the universal parameter pattern
    
    return $data;
}

// Hook priority system for compatibility
define('LIONWP_PRIORITY_CRITICAL', 5);   // Must run first
define('LIONWP_PRIORITY_NORMAL', 10);    // Standard priority  
define('LIONWP_PRIORITY_LATE', 20);      // After other customizations
define('LIONWP_PRIORITY_CLEANUP', 50);   // Final processing

// Use consistent priorities across all hooks
add_action('lionwp_social_share_before_buttons', 'my_function', LIONWP_PRIORITY_NORMAL, 3);
add_action('lionwp_gdpr_before_notice', 'my_function', LIONWP_PRIORITY_NORMAL, 3);
add_action('lionwp_construction_before_page', 'my_function', LIONWP_PRIORITY_NORMAL, 3);
Need Help? Our developer community and support team are here to help with any hook-related questions. Contact us at LionWP Support.