includes/class-mymembershipplugin

Home » Snippets » includes/class-mymembershipplugin
0

Created with:

Visibility: 

public

Creator: Biswajit Barman

Customize with WPTurbo AI
X

Add Snippet To Project

New Project
Add To Existing Project
					<?php

class MyMembershipPlugin {
    public function init() {
        // Register custom post types
        add_action('init', [$this, 'register_membership_levels']);
        
        // Shortcodes for registration and login forms
        add_shortcode('membership_registration', [$this, 'render_registration_form']);
        add_shortcode('membership_login', [$this, 'render_login_form']);
        
        // Handle form submissions
        add_action('init', [$this, 'handle_form_submission']);
    }

    public function register_membership_levels() {
        $labels = array(
            'name' => 'Membership Levels',
            'singular_name' => 'Membership Level',
            'add_new' => 'Add New',
            'add_new_item' => 'Add New Membership Level',
            'edit_item' => 'Edit Membership Level',
            'new_item' => 'New Membership Level',
            'view_item' => 'View Membership Level',
            'search_items' => 'Search Membership Levels',
            'not_found' => 'No membership levels found',
            'not_found_in_trash' => 'No membership levels found in Trash',
            'menu_name' => 'Membership Levels',
        );

        $args = array(
            'labels' => $labels,
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'membership-levels'),
            'supports' => array('title', 'editor', 'custom-fields'),
        );

        register_post_type('membership_level', $args);
    }

    public function render_registration_form() {
        ob_start();
        ?>
        <form method="post" action="">
            <input type="text" name="username" placeholder="Username" required>
            <input type="email" name="email" placeholder="Email" required>
            <input type="password" name="password" placeholder="Password" required>
            <input type="hidden" name="membership_registration" value="1">
            <button type="submit">Register</button>
        </form>
        <?php
        return ob_get_clean();
    }

    public function render_login_form() {
        ob_start();
        ?>
        <form method="post" action="">
            <input type="text" name="username" placeholder="Username" required>
            <input type="password" name="password" placeholder="Password" required>
            <input type="hidden" name="membership_login" value="1">
            <button type="submit">Login</button>
        </form>
        <?php
        return ob_get_clean();
    }

    public function handle_form_submission() {
        if (isset($_POST['membership_registration'])) {
            $username = sanitize_user($_POST['username']);
            $email = sanitize_email($_POST['email']);
            $password = $_POST['password'];
            
            $user_id = wp_create_user($username, $password, $email);
            
            if (!is_wp_error($user_id)) {
                wp_redirect(home_url());
                exit;
            }
        }

        if (isset($_POST['membership_login'])) {
            $credentials = array(
                'user_login' => $_POST['username'],
                'user_password' => $_POST['password'],
                'remember' => true
            );

            $user = wp_signon($credentials, false);

            if (!is_wp_error($user)) {
                wp_redirect(home_url());
                exit;
            }
        }
    }
}
?>
				

Register an account to save your snippets or go Pro to get more features.