Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lurenjiasworld/wp-settings-api-class
WP Editor.md Settings Page's Base Component
https://github.com/lurenjiasworld/wp-settings-api-class
Last synced: about 2 months ago
JSON representation
WP Editor.md Settings Page's Base Component
- Host: GitHub
- URL: https://github.com/lurenjiasworld/wp-settings-api-class
- Owner: LuRenJiasWorld
- Created: 2020-03-20T08:15:27.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-03-20T08:20:50.000Z (almost 5 years ago)
- Last Synced: 2024-11-19T06:07:46.171Z (2 months ago)
- Language: PHP
- Size: 13.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### Package Installation (via Composer)
To install this package, edit your `composer.json` file:
```json
{
"require": {
"lurenjiasworld/wp-settings-api-class": "dev-master"
}
}
```Now run:
`$ composer install`
Usage Example
---------------Checkout the [examples](https://github.com/tareq1988/wordpress-settings-api-class/tree/master/example) folder for OOP and procedural example. They were called in [plugin.php](https://github.com/tareq1988/wordpress-settings-api-class/blob/master/plugin.php) file.
A detailed tutorial can be found [here](https://tareq.co/2012/06/wordpress-settings-api-php-class/).
### 重构获取选项
```php
/**
* Get the value of a settings field
*
* @param string $option settings field name
* @param string $section the section name this field belongs to
* @param string $default default text if it's not found
*
* @return mixed
*/
function prefix_get_option( $option, $section, $default = '' ) {$options = get_option( $section );
if ( isset( $options[$option] ) ) {
return $options[$option];
}return $default;
}
```### 选项实例
```php
private $settings_api;function __construct() {
$this->settings_api = new Settings();add_action( 'admin_init', array($this, 'admin_init') );
add_action( 'admin_menu', array($this, 'admin_menu') );
}function admin_init() {
//set the settings
$this->settings_api->set_sections( $this->get_settings_sections() );
$this->settings_api->set_fields( $this->get_settings_fields() );//initialize settings
$this->settings_api->admin_init();
}function admin_menu() {
add_options_page( 'Settings API', 'Settings API', 'delete_posts', 'settings_api_test', array($this, 'plugin_page') );
}function get_settings_sections() {
$sections = array(
array(
'id' => 'wedevs_basics',
'title' => __( 'Basic Settings', 'wedevs' )
),
array(
'id' => 'wedevs_advanced',
'title' => __( 'Advanced Settings', 'wedevs' )
)
);
return $sections;
}/**
* Returns all the settings fields
*
* @return array settings fields
*/
function get_settings_fields() {
$settings_fields = array(
'wedevs_basics' => array(
array(
'name' => 'text_val',
'label' => __( 'Text Input', 'wedevs' ),
'desc' => __( 'Text input description', 'wedevs' ),
'placeholder' => __( 'Text Input placeholder', 'wedevs' ),
'type' => 'text',
'default' => 'Title',
'sanitize_callback' => 'sanitize_text_field'
),
array(
'name' => 'number_input',
'label' => __( 'Number Input', 'wedevs' ),
'desc' => __( 'Number field with validation callback `floatval`', 'wedevs' ),
'placeholder' => __( '1.99', 'wedevs' ),
'min' => 0,
'max' => 100,
'step' => '0.01',
'type' => 'number',
'default' => 'Title',
'sanitize_callback' => 'floatval'
),
array(
'name' => 'textarea',
'label' => __( 'Textarea Input', 'wedevs' ),
'desc' => __( 'Textarea description', 'wedevs' ),
'placeholder' => __( 'Textarea placeholder', 'wedevs' ),
'type' => 'textarea'
),
array(
'name' => 'html',
'desc' => __( 'HTML area description. You can use any bold or other HTML elements.', 'wedevs' ),
'type' => 'html'
),
array(
'name' => 'checkbox',
'label' => __( 'Checkbox', 'wedevs' ),
'desc' => __( 'Checkbox Label', 'wedevs' ),
'type' => 'checkbox'
),
array(
'name' => 'radio',
'label' => __( 'Radio Button', 'wedevs' ),
'desc' => __( 'A radio button', 'wedevs' ),
'type' => 'radio',
'options' => array(
'yes' => 'Yes',
'no' => 'No'
)
),
array(
'name' => 'selectbox',
'label' => __( 'A Dropdown', 'wedevs' ),
'desc' => __( 'Dropdown description', 'wedevs' ),
'type' => 'select',
'default' => 'no',
'options' => array(
'yes' => 'Yes',
'no' => 'No'
)
),
array(
'name' => 'password',
'label' => __( 'Password', 'wedevs' ),
'desc' => __( 'Password description', 'wedevs' ),
'type' => 'password',
'default' => ''
),
array(
'name' => 'file',
'label' => __( 'File', 'wedevs' ),
'desc' => __( 'File description', 'wedevs' ),
'type' => 'file',
'default' => '',
'options' => array(
'button_label' => 'Choose Image'
)
)
),
'wedevs_advanced' => array(
array(
'name' => 'color',
'label' => __( 'Color', 'wedevs' ),
'desc' => __( 'Color description', 'wedevs' ),
'type' => 'color',
'default' => ''
),
array(
'name' => 'password',
'label' => __( 'Password', 'wedevs' ),
'desc' => __( 'Password description', 'wedevs' ),
'type' => 'password',
'default' => ''
),
array(
'name' => 'wysiwyg',
'label' => __( 'Advanced Editor', 'wedevs' ),
'desc' => __( 'WP_Editor description', 'wedevs' ),
'type' => 'wysiwyg',
'default' => ''
),
array(
'name' => 'multicheck',
'label' => __( 'Multile checkbox', 'wedevs' ),
'desc' => __( 'Multi checkbox description', 'wedevs' ),
'type' => 'multicheck',
'default' => array('one' => 'one', 'four' => 'four'),
'options' => array(
'one' => 'One',
'two' => 'Two',
'three' => 'Three',
'four' => 'Four'
)
),
)
);return $settings_fields;
}function plugin_page() {
echo '';';$this->settings_api->show_navigation();
$this->settings_api->show_forms();echo '
}/**
* Get all the pages
*
* @return array page names with key value pairs
*/
function get_pages() {
$pages = get_pages();
$pages_options = array();
if ( $pages ) {
foreach ($pages as $page) {
$pages_options[$page->ID] = $page->post_title;
}
}return $pages_options;
}
```主方法实例对象即可