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']);
 }
示例#2
0
/**
 * 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());
 }