<?php /** * Plugin Name: AAA Test Plugin * Description: A sample plugin that supports admin options. * Author: Matt Thomas * Version: 0.0.1 * * @package WordPress */ /** * Add link to this plugin's settings page * * @param [type] $links * @return void */ $plugin = plugin_basename( __FILE__ ); add_filter( "plugin_action_links_$plugin", function( $links ) { $settings_link = '<a href="options-general.php?page=aaa-test-plugin">' . __( 'Settings' ) . '</a>'; array_push( $links, $settings_link ); return $links; } ); /** * Callback that adds options to the settings page. * * @return void */ function plugin_options_page() { ?> <div> <h2>My custom plugin</h2> Options relating to the Custom Plugin. <form action="options.php" method="post"> <?php settings_fields( 'plugin_options' ); ?> <?php do_settings_sections( 'plugin' ); ?> <input name="Submit" type="submit" value="<?php esc_attr_e( 'Save Changes' ); ?>" /> </form></div> <?php } /** * Adds sub-menu to settings admin menu item * * @return void */ add_action( 'admin_menu', function () { add_options_page( $menu_title = 'Custom Plugin Menu', // Link text under settings. $page_title = 'Custom Plugin Page', // Plugin page title. $capability = 'manage_options', // User must have this capability. $menu_slug = 'aaa-test-plugin', // Plugin slug (unique alias). $function = 'plugin_options_page' // Function that generates plugin options. ); } ); /** * Outputs text for the main settings * * @return void */ function plugin_section_text() { echo 'Foo bar baz qux!'; } /** * Outputs the setting field. * * @return void */ function plugin_setting_string() { $options = get_option( 'plugin_options' ); echo "<input id='plugin_text_string' name='plugin_options[text_string]' size='40' type='text' value='{$options['text_string']}' />"; } add_action( 'admin_init', function () { register_setting( 'plugin_options', // Group ID, same as settings_fields() value. 'plugin_options', // Options name. 'plugin_options_validate' // Function callnack to validate options. ); add_settings_section( 'plugin_main', // Section unique ID. 'Main Settings', // Rendered section title. 'plugin_section_text', // Function callback to output section text. 'plugin' // Page name, must match do_settings_sections() value. ); add_settings_field( 'plugin_text_string', // Field unique ID. 'Plugin Text Input', // Field title. 'plugin_setting_string', // Function callback to output the field. 'plugin', // Page name this is attached to (same as do_settings()). 'plugin_main' // ID of the settings section this is part of (same as add_settings_section() first argument). ); } );