-
Notifications
You must be signed in to change notification settings - Fork 0
/
class.settings.php
85 lines (76 loc) · 2.08 KB
/
class.settings.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
namespace Coauthor;
class Settings {
private $option_group = 'coauthor';
public function __construct() {
$this->settings_options = get_option( $this->option_group );
if ( is_admin() ) {
add_action( 'admin_menu', array( $this, 'add_plugin_page' ) );
add_action( 'admin_init', array( $this, 'settings_page_init' ) );
}
}
public function add_plugin_page() {
add_options_page(
'Coauthor', // page_title
'Coauthor', // menu_title
'manage_options', // capability
$this->option_group, // menu_slug
array( $this, 'create_admin_page' ) // function
);
}
public function create_admin_page() {
?>
<div class="wrap">
<h1>Coauthor</h1>
<?php settings_errors(); ?>
<form method="post" action="options.php">
<?php
settings_fields( 'coauthor' );
do_settings_sections( 'settings-admin' );
submit_button();
?>
</form>
</div>
<?php
}
public function settings_page_init() {
add_settings_section(
'settings-section', // id
'Open AI Settings', // title
function() {
_e( 'Here are settings your OpenAI Connection' );
},
'settings-admin' // page
);
add_settings_field(
'openai-token', // id
'OpenAI Token', // title
function() {
$this->generate_field( 'openai-token', 'sk-...', __( 'Get the token from the OpenAI dashboad' ) );
},
'settings-admin', // page
'settings-section' // section
);
register_setting(
$this->option_group, // option_group
$this->option_group, // option_name
function( $input ) {
$sanitary_values = array();
if ( isset( $input['openai-token'] ) ) {
$sanitary_values['openai-token'] = sanitize_text_field( $input['openai-token'] );
}
return $sanitary_values;
}
);
}
private function generate_field( $id, $placeholder = '', $label = '' ) {
printf(
'<input class="large-text" type="text" name="%5$s[%1$s]" id="%1$s" value="%2$s" placeholder="%3$s"><br/><label for="%1$s">%4$s</label>',
$id,
isset( $this->settings_options[ $id ] ) ? esc_attr( $this->settings_options[ $id ] ) : '',
$placeholder,
$label,
$this->option_group
);
}
}