Write a plugin with menu and basic setting page in wordpress
<?php
/*
Plugin Name: My Custom Plugin
Description: A basic plugin that adds a menu and a settings page
Version: 1.0
*/
function my_custom_plugin_menu() {
add_menu_page(
'My Custom Plugin',
'My Custom Plugin',
'manage_options',
'my-custom-plugin',
'my_custom_plugin_settings_page',
'dashicons-admin-generic',
20
);
}
add_action( 'admin_menu', 'my_custom_plugin_menu' );
function my_custom_plugin_settings_page() {
?>
<div class="wrap">
<h1>My Custom Plugin Settings</h1>
<form method="post" action="options.php">
<?php
settings_fields( 'my-custom-plugin-settings-group' );
do_settings_sections( 'my-custom-plugin-settings-group' );
submit_button();
?>
</form>
</div>
<?php
}
function my_custom_plugin_settings() {
register_setting( 'my-custom-plugin-settings-group', 'my_custom_plugin_option_name' );
add_settings_section( 'my-custom-plugin-settings-section', 'My Custom Plugin Settings', 'my_custom_plugin_settings_section_callback', 'my-custom-plugin-settings-group' );
add_settings_field( 'my_custom_plugin_field_name', 'Field Name', 'my_custom_plugin_field_name_callback', 'my-custom-plugin-settings-group', 'my-custom-plugin-settings-section' );
}
add_action( 'admin_init', 'my_custom_plugin_settings' );
function my_custom_plugin_settings_section_callback() {
echo 'Enter your settings below:';
}
function my_custom_plugin_field_name_callback() {
$setting = esc_attr( get_option( 'my_custom_plugin_option_name' ) );
echo '<input type="text" name="my_custom_plugin_option_name" value="' . $setting . '" />';
}
This is just a basic example, you can add more fields, settings, and customize it according to your requirement.