Creating Custom Options Pages in WordPress

Creating Custom Options Pages in WordPress
492 Views
0
(0)

To create a menu for theme setting in the WordPress admin, you should use the Settings API provided by WordPress. Using this API, you can register a new options page, with fields for settings. Additionally, you can add settings to an existing options page.

That being said, let’s add the following code to the main file of a plugin or a theme’s function.php file (keeping in mind that it’s always best to create a child theme instead of altering a functions.php file):

<?php

add_action( 'admin_menu', 'cxc_theme_setting_create_menu' );

function cxc_theme_setting_create_menu() {

	//create new top-level menu
	add_menu_page( 'My Theme Settings', 'Theme Settings', 'administrator', __FILE__, 'cxc_theme_setting_page' , 'dashicons-admin-generic' );

	//call register settings function
	add_action( 'admin_init', 'cxc_register_my_theme_setting' );
}

function cxc_register_my_theme_setting() {
	//register our settings
	register_setting( 'my-theme-settings-group', 'new_option_name' );
	register_setting( 'my-theme-settings-group', 'some_other_option' );
	register_setting( 'my-theme-settings-group', 'option_etc' );
}

function cxc_theme_setting_page() {
	?>
	<div class="wrap">
		<h1>Theme Setting</h1>

		<form method="post" action="options.php">
			<?php settings_fields( 'my-theme-settings-group' ); ?>
			<?php do_settings_sections( 'my-theme-settings-group' ); ?>
			<table class="form-table">
				<tr valign="top">
					<th scope="row">New Option Name</th>
					<td><input type="text" name="new_option_name" value="<?php echo esc_attr( get_option('new_option_name') ); ?>" /></td>
				</tr>

				<tr valign="top">
					<th scope="row">Some Other Option</th>
					<td><input type="text" name="some_other_option" value="<?php echo esc_attr( get_option('some_other_option') ); ?>" /></td>
				</tr>

				<tr valign="top">
					<th scope="row">Options, Etc.</th>
					<td><input type="text" name="option_etc" value="<?php echo esc_attr( get_option('option_etc') ); ?>" /></td>
				</tr>
			</table>

			<?php submit_button(); ?>

		</form>
	</div>
<?php } ?>

How useful was this blog?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this blog.

As you found this blog useful...

Follow us on social media!

We are sorry that this blog was not useful for you!

Let us improve this blog!

Tell us how we can improve this blog?

Leave a comment

Your email address will not be published. Required fields are marked *