-
Notifications
You must be signed in to change notification settings - Fork 16
Adding Options Pages
Michiel Tramper edited this page Jul 28, 2021
·
11 revisions
Option Pages can be added by using the add method, where $values are an array of settings.
$fields = MakeitWorkPress\WP_Custom_Fields\Framework::instance();
$fields->add( 'options', $values );This will add a general options page to your WordPress website admin area. It is also possible to add an options page to a multisite network admin area using the context argument.
On the highest level, an options group may have the following keys.
| key | type | description |
|---|---|---|
| title | string | The title of the options page (required) |
| id | string | The id of the options page (required). This is the name under which the option will be saved, as well as the slug of your options page. |
| menu_title | string | The title used in the menu (required) |
| capability | string | The capability, such as 'manage_options' (required). |
| context | string | The optional multisite context. If set to 'network', this options page will be added in the Network Admin dashboard instead of each site in the multisite network. |
| location | string | The optional location of the options page within the dashboard menu. Defaults to 'menu'. Supports 'menu', 'submenu', 'dashboard', 'posts', 'media', 'links', 'pages', 'comments', 'theme', 'users', 'management' or 'options'. Network (multisite) option pages support 'menu', 'theme', 'users', 'submenu' and 'dashboard'. |
| menu_position | int | The position in the WordPress admin menu. A higher value is lower down on the menu. Required if the location is set to 'menu'. |
| menu_icon | string | The dashicon icon for the menu, such as ''dashicons-admin-generic''. Required if the location is set to 'menu'. |
| slug | string | The parent slug or template file name under which a sub-menu page is added. Required if the location is set to 'submenu'. Can also be used to add option pages for multisitepages such as 'settings.php' and 'sites.php'. |
| class | string | An optional class for this page. Also supports 'tabs-left' to display tabs to the left. |
| sections | array | The sections, which each have a group of fields. |
| labels | array | Optional labels for changing the text in save, restore and reset buttons. Defaults to ['save' => __( 'Save Settings', 'wpcf' ), 'reset' => __( 'Reset Settings', 'wpcf' ), 'restore' => __( 'Restore Settings', 'wpcf' )]
|
| messages | array | Optional custom success messages. Defaults to ['update' => __( 'Settings saved!', 'wpcf' ), 'reset' => __( 'All settings are reset.', 'wpcf' ), 'restore' => __( 'Settings restored for this section', 'wpcf' ), 'import' => __('Settings Imported!', 'wpcf')]
|
The following is an example of an options page with every possible field.
$fields = MakeitWorkPress\WP_Custom_Fields\Framework::instance();
$fields->add( 'options', array(
'class' => 'tabs-left',
'id' => 'wp_custom_fields_options_2',
'title' => __('Theme Options 2', 'wp-custom-fields'),
'capability' => 'manage_options',
'menu_title' => __('WP_Custom_Fields 2', 'wp-custom-fields'),
'menu_icon' => 'dashicons-admin-generic',
'menu_position' => 99,
'location' => 'theme',
'sections' => array(
array(
'id' => 'second_section',
'title' => __('Section Two', 'wp-custom-fields'),
'icon' => 'camera_enhance',
'fields' => array(
array(
'id' => 'field1',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'background'
),
array(
'id' => 'field2',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'border'
),
array(
'id' => 'field2',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'boxshadow'
),
array(
'id' => 'field3',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'checkbox',
'options' => array(
'thing_one' => array( 'label' => __('Label One', 'wp-custom-fields') ),
'thing_two' => array( 'label' => __('Label Two', 'wp-custom-fields') )
)
),
array(
'id' => 'field4',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'colorpicker'
),
array(
'id' => 'field5',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'dimension'
),
array(
'id' => 'field6',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'dimensions'
),
array(
'id' => 'field7',
'type' => 'divider'
),
array(
'id' => 'field8',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'editor'
),
array(
'id' => 'field9',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'export',
'option_id' => 'wp_custom_fields_options_2'
),
array(
'id' => 'field9',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'heading'
),
array(
'id' => 'field10',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'icons'
),
array(
'id' => 'field11',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'input'
),
array(
'id' => 'field12',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'location'
),
array(
'id' => 'field13',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'media'
),
array(
'id' => 'field14',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'radio',
'options' => array(
'thing_one' => array( 'label' => __('Label One', 'wp-custom-fields') ),
'thing_two' => array( 'label' => __('Label Two', 'wp-custom-fields') )
)
),
array (
'description' => __('Example Title', 'wp-custom-fields'),
'id' => 'field_repeatable',
'title' => __('Example Description', 'wp-custom-fields'),
'type' => 'repeatable',
'fields' => array(
array(
'id' => 'url',
'title' => __('Url to Social Network', 'wp-custom-fields'),
'type' => 'input',
'subtype' => 'url'
),
array(
'id' => 'network',
'title' => __('Type of Social Network', 'wp-custom-fields'),
'type' => 'select',
'options' => array(
'email' => __('Email', 'wp-custom-fields'),
'facebook' => __('Facebook', 'wp-custom-fields'),
'instagram' => __('Instagram', 'wp-custom-fields'),
'twitter' => __('Twitter', 'wp-custom-fields'),
'linkedin' => __('LinkedIn', 'wp-custom-fields'),
'google-plus' => __('Google Plus', 'wp-custom-fields'),
'pinterest' => __('Pinterest', 'wp-custom-fields'),
'reddit' => __('Reddit', 'wp-custom-fields')
)
)
)
),
array(
'id' => 'field15',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'select',
'options' => array(
'thing_one' => __('Label One', 'wp-custom-fields'),
'thing_two' => __('Label Two', 'wp-custom-fields')
)
),
array(
'id' => 'field16',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'select',
'subtype' => 'post'
),
array(
'id' => 'field17',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'slider'
),
array(
'id' => 'field18',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'textarea'
),
array(
'id' => 'field19',
'title' => __('Example Title', 'wp-custom-fields'),
'description' => __('Example Description', 'wp-custom-fields'),
'type' => 'typography'
)
)
)
)
) );WP Custom Fields has been developed by Make it WorkPress