'knowledge-base', 'category_slug' => 'kb-category', 'tag_slug' => 'kb-tag', 'enable_multiple_kb' => false, 'kb_slug' => 'knowledge-base-group', 'docs_page_title' => 'Knowledge Base', 'enable_live_search' => true, 'enable_breadcrumbs' => true, 'enable_toc' => true, 'enable_access_control' => false, 'access_control_roles' => [ 'administrator' ], 'restrict_docs' => [ 'all' ], 'restrict_categories' => [ 'all' ], 'restrict_knowledge_base' => [ 'all' ], 'access_control_redirect_url' => '', // Global Role Management Settings 'role_write_docs' => [ 'administrator' ], 'role_edit_settings' => [ 'administrator' ], 'role_check_analytics' => [ 'administrator' ], 'role_check_faq_builder' => [ 'administrator' ], // Layout Sorting Settings 'kb_orderby' => 'name', 'kb_order' => 'ASC', 'category_orderby' => 'name', 'category_order' => 'ASC', 'docs_orderby' => 'date', 'docs_order' => 'DESC', ]; } public function get_all() { return get_option( self::OPTION_NAME, $this->get_default() ); } public function get( $key, $default = null ) { $settings = $this->get_all(); if ( isset( $settings[ $key ] ) ) { return $settings[ $key ]; } $defaults = $this->get_default(); return isset( $defaults[ $key ] ) ? $defaults[ $key ] : $default; } public function save( $key, $value ) { $settings = $this->get_all(); $settings[ $key ] = $value; return update_option( self::OPTION_NAME, $settings ); } public function save_all( $settings ) { // Clean and merge with defaults/old $old_settings = $this->get_all(); $new_settings = wp_parse_args( $settings, $old_settings ); return update_option( self::OPTION_NAME, $new_settings ); } public function save_default_settings() { $settings = get_option( self::OPTION_NAME, false ); if ( false === $settings ) { update_option( self::OPTION_NAME, $this->get_default() ); } } }