Plugin options framework is a small PHP library designed to simplify WordPress plugin options page
development. You don't need to call register_setting
and care about adding your own options page
anymore. So... enough, let's see a real code example in your plugin's code:
// myplugin.php file
add_action('init', 'my_init');
function my_init(){
global $options;
$fields = array(
array('type' => 'text', 'name' => 'text_field', 'title' => 'Text setting field', 'default' => 'default text'), // Added a text field
array('type' => 'tab', 'title' => 'Other options tab'), //Started a new tab
array('type' => 'section', 'title' => 'some settings section'), //Started a new section at this tab
array('type' => 'color', 'name' => 'background', 'title' => 'Background color',
'default' => '#444',
'legend' => 'A legend shown at the right side') // Added a background color
);
$options = new Plugin_Options_Framework_0_2(dirname(__FILE__),
$fields,
array('page_title' => 'My plugin settings')
); // Created an instance of the options framework
$background_color = $options->get_option('background');//Read background color option
}
The code above will add "My plugin settings" options page to WordPress' "Settings" admin section, and
will build a tabbed options page for you declaratively. You can use Plugin_Options_Framework
class
instances to read or write plugin settings with $instance->get_option($name)
/ $instance->set_option($name,$value)
calls.
##Field types supported As of version 0.2, next field types are supported:
text
- Simple text fieldtextarea
- textarea fieldeditor
- WordPress editor, only supported on WordPress 3.3. On earlier versions, works equal to textarea.checkbox
- checkbox.radio
- radio buttons setselect
- a dropdown fieldcolor
- a color picker fieldcustom
- a custom html field
##Adding your own fields Adding your own custom fields is simple. You need to do the next:
-
Inherit a corresponding
Plugin_Options_Framework_Fields_0_2
class:class My_Options_Fields extends Plugin_Options_Framework_Fields_0_2
-
Add a method that will implement a field type you need. The method should receive one argument -
$field
hash containing options for rendering the field.function typography($field){ echo ('here is typography field HTML output'); }
-
Pass your class name as
fields
option to thePlugin_Options_Framework
instance when creating it:$fields_array = array(array('type' => 'typography', 'name' => 'my_typo_field'), ...); $pof = new Plugin_Options_Framework_0_2(dirname(FILE), $fields_array, // field definitions array, see above array('fields' => 'My_Options_Fields') // a name of the class you created );
##Compatibility
Currently, Plugin Options Framework is at version 0.2. But what will happen when 0.3, 0.4 and 3.0
will be released and different plugins will use different versions? The answer is simple. Every new
version released will have a version number inside the classname, like Plugin_Options_Framework_0_4
and every plugin will only instantiate a version it is built on, for example:
//my-superior-plugin.php
function my_init(){
....
$options = new Plugin_Options_Framework_0_2(....); // creating an instance of old good 0.2 version;
}
//an-another-plugin.php
function another_init(){
$options = new Plugin_Options_Framework_3_2(...); // creating an instance of bleeding edge version.
}