public function test_register() { register_setting('test_group', 'test_option'); $registered = get_registered_settings(); $this->assertArrayHasKey('test_option', $registered); $args = $registered['test_option']; $this->assertEquals('test_group', $args['group']); // Check defaults. $this->assertEquals('string', $args['type']); $this->assertEquals(false, $args['show_in_rest']); $this->assertEquals('', $args['description']); }
/** * Filter the default value for the option. * * For settings which register a default setting in `register_setting()`, this * function is added as a filter to `default_option_{$option}`. * * @since 4.7.0 * * @param mixed $default Existing default value to return. * @param string $option Option name. * @param bool $passed_default Was `get_option()` passed a default value? * @return mixed Filtered default value. */ function filter_default_option($default, $option, $passed_default) { if ($passed_default) { return $default; } $registered = get_registered_settings(); if (empty($registered[$option])) { return $default; } return $registered[$option]['default']; }
/** * Get all the registered options for the Settings API * * @return array */ protected function get_registered_options() { require_once ABSPATH . 'wp-admin/includes/plugin.php'; $rest_options = array(); foreach (get_registered_settings() as $name => $args) { if (empty($args['show_in_rest'])) { continue; } $rest_args = array(); if (is_array($args['show_in_rest'])) { $rest_args = $args['show_in_rest']; } $defaults = array('name' => !empty($rest_args['name']) ? $rest_args['name'] : $name, 'schema' => array()); $rest_args = array_merge($defaults, $rest_args); $default_schema = array('type' => empty($args['type']) ? null : $args['type'], 'description' => empty($args['description']) ? '' : $args['description'], 'default' => isset($args['default']) ? $args['default'] : null); $rest_args['schema'] = array_merge($default_schema, $rest_args['schema']); $rest_args['option_name'] = $name; // Skip over settings that don't have a defined type in the schema. if (empty($rest_args['schema']['type'])) { continue; } $rest_options[$rest_args['name']] = $rest_args; } return $rest_options; }
/** * Retrieves all of the registered options for the Settings API. * * @since 4.7.0 * @access protected * * @return array Array of registered options. */ protected function get_registered_options() { $rest_options = array(); foreach (get_registered_settings() as $name => $args) { if (empty($args['show_in_rest'])) { continue; } $rest_args = array(); if (is_array($args['show_in_rest'])) { $rest_args = $args['show_in_rest']; } $defaults = array('name' => !empty($rest_args['name']) ? $rest_args['name'] : $name, 'schema' => array()); $rest_args = array_merge($defaults, $rest_args); $default_schema = array('type' => empty($args['type']) ? null : $args['type'], 'description' => empty($args['description']) ? '' : $args['description'], 'default' => isset($args['default']) ? $args['default'] : null); $rest_args['schema'] = array_merge($default_schema, $rest_args['schema']); $rest_args['option_name'] = $name; // Skip over settings that don't have a defined type in the schema. if (empty($rest_args['schema']['type'])) { continue; } /* * Whitelist the supported types for settings, as we don't want invalid types * to be updated with arbitrary values that we can't do decent sanitizing for. */ if (!in_array($rest_args['schema']['type'], array('number', 'integer', 'string', 'boolean'), true)) { continue; } $rest_options[$rest_args['name']] = $rest_args; } return $rest_options; }
public function testRegisterSettings() { require_once dirname(__FILE__) . '/../includes/AliyunOpenSearchOptions.php'; $this->admin->registerSettings(); $this->assertEquals(AliyunOpenSearchOptions::getAllSettingKeys(), get_registered_settings()); }