option_name = $option_name;
$this->page_args = $page_args;
$this->fields = $fields;
$this->setup = $setup;
add_action('admin_menu', array($this, 'settings_page'), 1000);
add_action('wp_ajax_wpcfto_save_settings', array($this, 'stm_save_settings'));
if (!empty($this->setup['admin_bar_title'])) {
add_action('admin_bar_menu', array($this, 'admin_bar_button'), 40);
add_action('wp_head', array($this, 'admin_bar_styles'));
add_action('admin_head', array($this, 'admin_bar_styles'));
}
}
function admin_bar_styles() {
$selector = "#wp-admin-bar-{$this->setup['option_name']}";
?>
setup['page']['menu_slug'], admin_url());
$wpcfto_logo = (!empty($this->setup['logo'])) ? $this->setup['logo'] : STM_WPCFTO_URL . '/metaboxes/assets/images/stm-logo.svg';
$title = $this->setup['admin_bar_title'];
$menu = "
{$title}";
$args = array(
'id' => $this->setup['option_name'],
'title' => $menu,
'href' => $url,
'meta' => array(
'title' => $title
)
);
$wp_admin_bar->add_node($args);
}
function settings_page()
{
if (current_user_can('manage_options')) {
if (!empty($this->page_args['parent_slug'])) {
$r = add_submenu_page(
$this->page_args['parent_slug'],
$this->page_args['page_title'],
$this->page_args['menu_title'],
'manage_options',
$this->page_args['menu_slug'],
array($this, 'settings_page_view')
);
} else {
add_menu_page(
$this->page_args['page_title'],
$this->page_args['menu_title'],
'manage_options',
$this->page_args['menu_slug'],
array($this, 'settings_page_view'),
$this->page_args['icon'],
$this->page_args['position']
);
}
do_action("wpcfto_screen_{$this->option_name}_added");
}
}
public static function stm_get_post_type_array($post_type, $args = array())
{
$r = array(
'' => __('Choose Page', 'wp-custom-fields-theme-options'),
);
$default_args = array(
'post_type' => $post_type,
'posts_per_page' => -1,
'post_status' => 'publish'
);
$q = get_posts(wp_parse_args($args, $default_args));
if (!empty($q)) {
foreach ($q as $post_data) {
$r[$post_data->ID] = $post_data->post_title;
}
}
wp_reset_query();
return $r;
}
function wpcfto_settings()
{
$args = array();
$args[$this->option_name] = $this->fields;
return apply_filters($this->option_name, array(
'id' => $this->option_name,
'args' => $args
));
}
function wpcfto_get_settings()
{
return get_option($this->option_name, array());
}
function settings_page_view()
{
$metabox = $this->wpcfto_settings();
$settings = $this->wpcfto_get_settings();
$page = $this->page_args;
$wpcfto_title = (!empty($this->setup['title'])) ? $this->setup['title'] : '';
$wpcfto_sub_title = (!empty($this->setup['sub_title'])) ? $this->setup['sub_title'] : '';
$wpcfto_logo = (!empty($this->setup['logo'])) ? $this->setup['logo'] : STM_WPCFTO_URL . '/metaboxes/assets/images/stm-logo.svg';
foreach ($metabox['args'][$this->option_name] as $section_name => $section) {
foreach ($section['fields'] as $field_name => $field) {
$default_value = (!empty($field['value'])) ? $field['value'] : '';
$metabox['args'][$this->option_name][$section_name]['fields'][$field_name]['value'] = (isset($settings[$field_name])) ? $settings[$field_name] : $default_value;
}
}
include STM_WPCFTO_PATH . '/settings/view/main.php';
}
public static function get_my_settings()
{
}
function stm_save_settings()
{
check_ajax_referer('wpcfto_save_settings', 'nonce');
if (!current_user_can('manage_options')) {
die;
}
if (empty($_REQUEST['name'])) {
die;
}
$id = sanitize_text_field($_REQUEST['name']);
$settings = array();
$request_body = file_get_contents('php://input');
if (!empty($request_body)) {
$request_body = json_decode($request_body, true);
foreach ($request_body as $section_name => $section) {
foreach ($section['fields'] as $field_name => $field) {
$settings[$field_name] = $field['value'];
}
}
}
do_action('wpcfto_settings_saved', $id, $settings);
$updateOption = update_option($id, $settings);
do_action('wpcfto_after_settings_saved', $id, $settings);
wp_send_json($updateOption);
}
}
add_action('init', function () {
$theme_options_page = apply_filters('wpcfto_options_page_setup', array());
if (!empty($theme_options_page)) {
foreach ($theme_options_page as $setup) {
if (empty($setup['option_name']) or empty($setup['page']) or !isset($setup['fields'])) {
continue;
}
new WPCFTO_Settings($setup['option_name'], $setup['page'], $setup['fields'], $setup);
}
}
});