0
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;
}
}
}
}
?>