* @license GPL-2.0+ * @link http://wptheming.com * @copyright 2010-2014 WP Theming */ class Options_Framework_Admin { /** * Page hook for the options screen * * @since 1.7.0 * @type string */ protected $options_screen = null; /** * Hook in the scripts and styles * * @since 1.7.0 */ public function init() { // Gets options to load $options = & Options_Framework::_optionsframework_options(); // Checks if options are available if ( $options ) { // Add the options page and menu item. add_action('admin_menu', array($this, 'add_top_options_page')); add_action('admin_menu', array($this, 'add_sub_options_page')); // Add the required scripts and styles add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); // Settings need to be registered after admin_init add_action( 'admin_init', array( $this, 'settings_init' ) ); } } /** * Registers the settings * * @since 1.7.0 */ function settings_init() { // Get the option name $options_framework = new Options_Framework; $name = $options_framework->get_option_name(); // Registers the settings fields and callback register_setting( 'optionsframework', $name, array ( $this, 'validate_options' ) ); // Displays notice after options save add_action( 'optionsframework_after_validate', array( $this, 'save_options_notice' ) ); add_action( 'optionsframework_after_sendmail', array( $this, 'send_mail_notice' ) ); } public function add_top_options_page() { add_menu_page( __('主题设置', 'kratos'), __('主题设置', 'kratos'), 'manage_options', 'kratos_options', '', 'dashicons-admin-generic', 99 ); } public static function menu_settings() { $menu = array( 'parent_slug' => 'kratos_options', 'page_title' => __('主题设置', 'kratos'), 'menu_title' => __('主题设置', 'kratos'), 'capability' => 'manage_options', 'menu_slug' => 'kratos_options', ); return $menu; } public function add_sub_options_page() { $menu = $this->menu_settings(); $this->options_screen = add_submenu_page( $menu['parent_slug'], $menu['page_title'], $menu['menu_title'], $menu['capability'], $menu['menu_slug'], array($this, 'options_page') ); } /** * Loads the required stylesheets * * @since 1.7.0 */ function enqueue_admin_styles( $hook ) { if ( $this->options_screen != $hook ) return; wp_enqueue_style( 'optionsframework', get_stylesheet_directory_uri() . '/inc/options-framework/css/optionsframework.css', array(), Options_Framework::VERSION ); wp_enqueue_style( 'wp-color-picker' ); } /** * Loads the required javascript * * @since 1.7.0 */ function enqueue_admin_scripts( $hook ) { if ( $this->options_screen != $hook ) return; // Enqueue custom option panel JS wp_enqueue_script( 'options-custom', get_stylesheet_directory_uri() . '/inc/options-framework/js/options-custom.js', array( 'jquery','wp-color-picker' ), Options_Framework::VERSION ); // Inline scripts from options-interface.php add_action( 'admin_head', array( $this, 'of_admin_head' ) ); } function of_admin_head() { // Hook to add custom scripts do_action( 'optionsframework_custom_scripts' ); } /** * Builds out the options panel. * * If we were using the Settings API as it was intended we would use * do_settings_sections here. But as we don't want the settings wrapped in a table, * we'll call our own custom optionsframework_fields. See options-interface.php * for specifics on how each individual field is generated. * * Nonces are provided using the settings_fields() * * @since 1.7.0 */ function options_page() { ?>