*/ public function get( string $taxonomy ): array { $stored = get_option( self::option_name( $taxonomy ), array() ); return wp_parse_args( is_array( $stored ) ? $stored : array(), self::defaults() ); } /** * @param array $settings */ public function update( string $taxonomy, array $settings ): bool { $sanitized = self::sanitize( wp_parse_args( $settings, self::defaults() ) ); return update_option( self::option_name( $taxonomy ), $sanitized ); } private static function option_name( string $taxonomy ): string { return self::OPTION_PREFIX . sanitize_key( $taxonomy ); } /** * @return array */ private static function defaults(): array { return array( 'schema_enabled' => true, 'robots_index' => true, 'robots_follow' => true, ); } /** * @param array $settings * * @return array */ private static function sanitize( array $settings ): array { return array( 'schema_enabled' => (bool) $settings['schema_enabled'], 'robots_index' => (bool) $settings['robots_index'], 'robots_follow' => (bool) $settings['robots_follow'], ); } }