Create new wordpress roles plugin

Here is a step-by-step guide to creating a new WordPress roles plugin:

Step 1: Create a new plugin folder and file

Create a new folder in the wp-content/plugins directory of your WordPress installation, and name it something like wp-roles-plugin. Inside this folder, create a new file called wp-roles-plugin.php.

Step 2: Define the plugin metadata

In the wp-roles-plugin.php file, add the following code to define the plugin metadata:

<?php
/*
Plugin Name: WP Roles Plugin
Description: A plugin to manage custom WordPress roles
Version: 1.0
Author: Your Name
Author URI: https://yourwebsite.com
*/

Step 3: Create the plugin functionality

In the same file, add the following code to create the plugin functionality:

function wp_roles_plugin_init() {
    // Register the custom roles
    register_roles();
}

function register_roles() {
    // Define the custom roles
    $roles = array(
        'editor' => array(
            'name' => 'Editor',
            'capabilities' => array(
                'edit_posts' => true,
                'edit_pages' => true,
                'publish_posts' => true,
                'publish_pages' => true,
                'delete_posts' => true,
                'delete_pages' => true,
            ),
        ),
        'author' => array(
            'name' => 'Author',
            'capabilities' => array(
                'edit_posts' => true,
                'publish_posts' => true,
                'delete_posts' => true,
            ),
        ),
        'contributor' => array(
            'name' => 'Contributor',
            'capabilities' => array(
                'edit_posts' => true,
            ),
        ),
    );

    // Register the custom roles
    foreach ($roles as $role => $role_data) {
        add_role($role, $role_data['name'], $role_data['capabilities']);
    }
}

add_action('plugins_loaded', 'wp_roles_plugin_init');

This code defines three custom roles: editor, author, and contributor. Each role has a set of capabilities that define what actions the user can perform.

Step 4: Add the plugin settings page

To add a settings page for the plugin, you can use the add_menu_page and add_submenu_page functions. Add the following code to the wp_roles_plugin_init function:

function wp_roles_plugin_init() {
    // Register the custom roles
    register_roles();

    // Add the plugin settings page
    add_menu_page('WP Roles Plugin', 'WP Roles Plugin', 'manage_options', 'wp-roles-plugin', 'wp_roles_plugin_settings');
}

function wp_roles_plugin_settings() {
    // Settings page content
   ?>
    <div class="wrap">
        <h1>WP Roles Plugin Settings</h1>
        <form>
            <table class="form-table">
                <tr>
                    <th><label for="wp-roles-plugin-role">Custom Role:</label></th>
                    <td><input type="text" id="wp-roles-plugin-role" name="wp-roles-plugin-role" value="<?php echo get_option('wp-roles-plugin-role');?>"></td>
                </tr>
            </table>
            <p class="submit"><input type="submit" name="submit" value="Save Changes"></p>
        </form>
    </div>
    <?php
}

add_action('admin_menu', 'wp_roles_plugin_add_menu');
function wp_roles_plugin_add_menu() {
    add_menu_page('WP Roles Plugin', 'WP Roles Plugin', 'manage_options', 'wp-roles-plugin', 'wp_roles_plugin_settings');
}

This code adds a settings page to the WordPress admin menu, with a form that allows users to input a custom role name.

Step 5: Save the plugin settings

To save the plugin settings, you can use the update_option function. Add the following code to the wp_roles_plugin_settings function:

function wp_roles_plugin_settings() {
    // Settings page content
   ?>
    <div class="wrap">
        <h1>WP Roles Plugin Settings</h1>
        <form>
            <table class="form-table">
                <tr>
                    <th><label for="wp-roles-plugin-role">Custom Role:</label></th>
                    <td><input type="text" id="wp-roles-plugin-role" name="wp-roles-plugin-role" value="<?php echo get_option('wp-roles-plugin-role');?>"></td>
                </tr>
            </table>
            <p class="submit"><input type="submit" name="submit" value="Save Changes"></p>
        </form>
    </div>
    <?php

    if (isset($_POST['submit'])) {
        update_option('wp-roles-plugin-role', $_POST['wp-roles-plugin-role']);
    }
}

This code saves the custom role name input by the user to the wp-roles-plugin-role option.

Step 6: Test the plugin

Save the wp-roles-plugin.php file and upload it to your WordPress installation. Activate the plugin and navigate to the settings page to test the plugin functionality.

That's it! You have now created a new WordPress roles plugin.