{"id":22618586,"url":"https://github.com/eighteen73/settings-api","last_synced_at":"2025-06-19T05:33:40.510Z","repository":{"id":63721099,"uuid":"541952216","full_name":"eighteen73/settings-api","owner":"eighteen73","description":"A helper class for registering WordPress settings pages with a simpler API.","archived":false,"fork":false,"pushed_at":"2023-09-19T08:26:43.000Z","size":21,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-15T08:45:29.970Z","etag":null,"topics":["settings-api","wordpress"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eighteen73.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-27T07:13:52.000Z","updated_at":"2024-04-22T12:09:17.000Z","dependencies_parsed_at":"2024-12-08T21:08:44.631Z","dependency_job_id":"02d73da2-be88-47d1-a103-b4824b611685","html_url":"https://github.com/eighteen73/settings-api","commit_stats":{"total_commits":14,"total_committers":2,"mean_commits":7.0,"dds":0.3571428571428571,"last_synced_commit":"38d9b9232726ee71902811b84fb58be2d65a67f0"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/eighteen73/settings-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eighteen73%2Fsettings-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eighteen73%2Fsettings-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eighteen73%2Fsettings-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eighteen73%2Fsettings-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eighteen73","download_url":"https://codeload.github.com/eighteen73/settings-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eighteen73%2Fsettings-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260072416,"owners_count":22954908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["settings-api","wordpress"],"created_at":"2024-12-08T21:08:36.119Z","updated_at":"2025-06-19T05:33:35.499Z","avatar_url":"https://github.com/eighteen73.png","language":"PHP","readme":"# WordPress Settings API Class\n\nAllows for easier creation of plugin settings pages by using an object orianted approach, with an API similar to the customizer.\n\n## An example\n\n```php\n\nuse Eighteen73\\SettingsApi\\SettingsApi;\n\n$settings = new SettingsApi(\n\t'Plugin Settings',\n\t'Plugin Settings',\n\t'manage_options',\n\t'plugin-name',\n\t100,\n\tfalse, // set it to 'true' to create a top level menu\n\t''     // icon url to be used on top level menu\n);\n\n// Submenus: if top level menu is created.\n$settings-\u003eset_submenu(\n\t'Submenu 1',\n\t'Submenu 1',\n\t'plugin-name-submenu',\n\t[ $this, 'callback_function' ]\n);\n\n// Section: Basic Settings.\n$settings-\u003eadd_section(\n\t[\n\t\t'id'    =\u003e 'plugin_name_basic',\n\t\t'title' =\u003e __( 'Basic Settings', 'plugin-name' ),\n\t]\n);\n\n// Section: Other Settings.\n$settings-\u003eadd_section(\n\t[\n\t\t'id'    =\u003e 'plugin_name_other',\n\t\t'title' =\u003e __( 'Other Settings', 'plugin-name' ),\n\t]\n);\n\n// Field: Text.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'      =\u003e 'text',\n\t\t'type'    =\u003e 'text',\n\t\t'name'    =\u003e __( 'Text Input', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'Text input description', 'plugin-name' ),\n\t\t'default' =\u003e 'Default Text',\n\t]\n);\n\n// Field: Number.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'                =\u003e 'text_no',\n\t\t'type'              =\u003e 'number',\n\t\t'name'              =\u003e __( 'Number Input', 'plugin-name' ),\n\t\t'desc'              =\u003e __( 'Number field with validation callback `intval`', 'plugin-name' ),\n\t\t'default'           =\u003e 1,\n\t\t'sanitize_callback' =\u003e 'intval',\n\t]\n);\n\n// Field: Email.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'   =\u003e 'email',\n\t\t'type' =\u003e 'email',\n\t\t'name' =\u003e __( 'Email', 'plugin-name' ),\n\t\t'desc' =\u003e __( 'Email field description', 'plugin-name' ),\n\t]\n);\n\n// Field: Password.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'   =\u003e 'password',\n\t\t'type' =\u003e 'password',\n\t\t'name' =\u003e __( 'Password Input', 'plugin-name' ),\n\t\t'desc' =\u003e __( 'Password field description', 'plugin-name' ),\n\t]\n);\n\n// Field: Textarea.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'   =\u003e 'textarea',\n\t\t'type' =\u003e 'textarea',\n\t\t'name' =\u003e __( 'Textarea Input', 'plugin-name' ),\n\t\t'desc' =\u003e __( 'Textarea description', 'plugin-name' ),\n\t]\n);\n\n// Field: Separator.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'   =\u003e 'separator',\n\t\t'type' =\u003e 'separator',\n\t]\n);\n\n// Field: Title.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'   =\u003e 'title',\n\t\t'type' =\u003e 'title',\n\t\t'name' =\u003e '\u003ch1\u003eTitle\u003c/h1\u003e',\n\t]\n);\n\n// Field: Checkbox.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'   =\u003e 'checkbox',\n\t\t'type' =\u003e 'checkbox',\n\t\t'name' =\u003e __( 'Checkbox', 'plugin-name' ),\n\t\t'desc' =\u003e __( 'Checkbox Label', 'plugin-name' ),\n\t]\n);\n\n// Field: Radio.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'      =\u003e 'radio',\n\t\t'type'    =\u003e 'radio',\n\t\t'name'    =\u003e __( 'Radio', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'Radio Button', 'plugin-name' ),\n\t\t'options' =\u003e [\n\t\t\t'yes' =\u003e 'Yes',\n\t\t\t'no'  =\u003e 'No',\n\t\t],\n\t]\n);\n\n// Field: Multicheck.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'      =\u003e 'multicheck',\n\t\t'type'    =\u003e 'multicheck',\n\t\t'name'    =\u003e __( 'Multile checkbox', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'Multile checkbox description', 'plugin-name' ),\n\t\t'options' =\u003e [\n\t\t\t'yes' =\u003e 'Yes',\n\t\t\t'no'  =\u003e 'No',\n\t\t],\n\t]\n);\n\n// Field: Multicheck with descriptions.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'      =\u003e 'multicheck_descriptions',\n\t\t'type'    =\u003e 'multicheck',\n\t\t'name'    =\u003e __( 'Multile checkbox with descriptions', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'Multile checkbox description', 'plugin-name' ),\n\t\t'options' =\u003e [\n\t\t\t'yes' =\u003e [\n\t\t\t\t'label' =\u003e 'Yes',\n\t\t\t\t'desc'  =\u003e 'Description of option',\n\t\t\t],\n\t\t\t'no' =\u003e [\n\t\t\t\t'label' =\u003e 'No',\n\t\t\t\t'desc'  =\u003e 'Description of option',\n\t\t\t],\n\t\t],\n\t]\n);\n\n// Field: Select.\n$settings-\u003eadd_field(\n\t'plugin_name_basic',\n\t[\n\t\t'id'      =\u003e 'select',\n\t\t'type'    =\u003e 'select',\n\t\t'name'    =\u003e __( 'A Dropdown', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'A Dropdown description', 'plugin-name' ),\n\t\t'options' =\u003e [\n\t\t\t'yes' =\u003e 'Yes',\n\t\t\t'no'  =\u003e 'No',\n\t\t],\n\t]\n);\n\n// Field: Image.\n$settings-\u003eadd_field(\n\t'plugin_name_other',\n\t[\n\t\t'id'      =\u003e 'image',\n\t\t'type'    =\u003e 'image',\n\t\t'name'    =\u003e __( 'Image', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'Image description', 'plugin-name' ),\n\t\t'options' =\u003e [\n\t\t\t'button_label' =\u003e 'Choose Image',\n\t\t],\n\t]\n);\n\n// Field: File.\n$settings-\u003eadd_field(\n\t'plugin_name_other',\n\t[\n\t\t'id'      =\u003e 'file',\n\t\t'type'    =\u003e 'file',\n\t\t'name'    =\u003e __( 'File', 'plugin-name' ),\n\t\t'desc'    =\u003e __( 'File description', 'plugin-name' ),\n\t\t'options' =\u003e [\n\t\t\t'button_label' =\u003e 'Choose file',\n\t\t],\n\t]\n);\n\n// Field: Color.\n$settings-\u003eadd_field(\n\t'plugin_name_other',\n\t[\n\t\t'id'          =\u003e 'color',\n\t\t'type'        =\u003e 'color',\n\t\t'name'        =\u003e __( 'Color', 'plugin-name' ),\n\t\t'desc'        =\u003e __( 'Color description', 'plugin-name' ),\n\t\t'placeholder' =\u003e __( '#5F4B8B', 'plugin-name' ),\n\t]\n);\n\n// Field: WYSIWYG.\n$settings-\u003eadd_field(\n\t'plugin_name_other',\n\t[\n\t\t'id'   =\u003e 'wysiwyg',\n\t\t'type' =\u003e 'wysiwyg',\n\t\t'name' =\u003e __( 'WP_Editor', 'plugin-name' ),\n\t\t'desc' =\u003e __( 'WP_Editor description', 'plugin-name' ),\n\t]\n);\n```\n\n## Credits\n\nHeavily based on [WP-OOP-Settings-API](https://github.com/ahmadawais/WP-OOP-Settings-API) by Ahmad Awais.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feighteen73%2Fsettings-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feighteen73%2Fsettings-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feighteen73%2Fsettings-api/lists"}