{"id":37236799,"url":"https://github.com/lumenpress/acf","last_synced_at":"2026-01-16T04:53:24.707Z","repository":{"id":62520259,"uuid":"99463909","full_name":"lumenpress/acf","owner":"lumenpress","description":"Advanced Custom Fields Plugin for Nimble","archived":false,"fork":false,"pushed_at":"2017-11-06T12:53:56.000Z","size":139,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-27T15:26:03.842Z","etag":null,"topics":["acf","eloquent","wordpress"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lumenpress.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-06T04:23:14.000Z","updated_at":"2023-04-15T17:14:20.000Z","dependencies_parsed_at":"2022-11-02T14:46:14.715Z","dependency_job_id":null,"html_url":"https://github.com/lumenpress/acf","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/lumenpress/acf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumenpress%2Facf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumenpress%2Facf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumenpress%2Facf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumenpress%2Facf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lumenpress","download_url":"https://codeload.github.com/lumenpress/acf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumenpress%2Facf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28420814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["acf","eloquent","wordpress"],"created_at":"2026-01-15T04:17:12.706Z","updated_at":"2026-01-15T04:17:13.257Z","avatar_url":"https://github.com/lumenpress.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Advanced Custom Fields for Nimble\n\n[![Build Status](https://travis-ci.org/lumenpress/acf.svg?branch=master)](https://travis-ci.org/lumenpress/acf) [![StyleCI](https://styleci.io/repos/99463909/shield?branch=master)](https://styleci.io/repos/99463909)\n\n- [Installation](#installation)\n- [Schema](#schema)\n  - [Field Groups](#field-groups)\n    - [Creating Field Groups](#creating-field-groups)\n    - [Renaming / Dropping Field Groups](#renaming--dropping-field-groups)\n  - [Fields](#fields)\n    - [Creating Fields](#creating-fields)\n    - [Modifying Fields](#modifying-fields)\n    - [Dropping Fields](#dropping-fields)\n- [Models](#models)\n  - [Inserts](#inserts)\n  - [Updates](#updates)\n  - [Deletes](#deletes)\n- [Builders](#builders)\n  - [Retrieving Results](#retrieving-results)\n  - [Inserting Values](#inserting-values)\n  - [Updating Values](#updating-values)\n  - [Deleting Values](#deleting-values)\n\n## Installation\n\n```\ncomposer require lumenpress/acf\n```\n\nCopy the `config/acf.php` file to your local config folder and register the configuration + Service Provider in bootstrap/app.php:\n\n```php\n$app-\u003econfigure('acf'); \n$app-\u003eregister(LumenPress\\ACF\\ServiceProvider::class);\n```\n\n## Schema\n\n### Field Groups\n\n#### Creating Field Groups\n\n```php\nuse LumenPress\\ACF\\Schema;\nuse LumenPress\\ACF\\Models\\FieldGroup;\n\nSchema::create($groupKey, function (FieldGroup $group) {\n    $group-\u003etitle('Title'); // required\n    $group-\u003elocation('post_type', 'page'); // required\n});\n```\n\nThe `$groupKey` should be unique, usually have `group_` as a prefix.\n\n```php\nSchema::create('group_599d8daf5e131', function (FieldGroup $group) {\n    $group-\u003etitle('Title'); // required\n    $group-\u003elocation('post_type', 'page'); // required\n});\n```\n\nIf you do not start with `group_`, the key will be encrypted using md5.\n\n```php\nSchema::create('home_page', function (FieldGroup $group) {\n    $group-\u003etitle('Home'); // required\n    $group-\u003elocation('post_type', 'page'); // required\n});\n\n// algorithm\necho 'group_'.substr(hash('md5', 'home_page'), 8, 16);\n// group_3f239af6fe3db5c0\n```\n\nAvailable Field Group Settings\n\n- `$group-\u003etitle('string')` required\n- `$group-\u003elocation($param, $operator, $value)` required\n- `$group-\u003eposition('normal')`\n- `$group-\u003estyle('default')`\n- `$group-\u003elabel_placement('top')`\n- `$group-\u003einstruction_placement('label')`\n- `$group-\u003ehide_on_screen('metabox')`\n- `$group-\u003edescription('string')`\n- `$group-\u003eorder(0)`\n- `$group-\u003eactive(true)` `true` or `false`\n\n**Location**\n\n**Parameters**\n\n- **Post**\n  - post_type\n  - post_template\n  - post_status\n  - post_format\n  - post_category\n  - post_taxonomy\n  - post\n- **Page**\n  - page_template\n  - page_type\n  - page_parent\n  - page\n- **User**\n  - current_user\n  - current_user_role\n  - user_form\n  - user_role\n- **Forms**\n  - taxonomy\n  - attachment\n  - comment\n  - widget\n  - nav_menu\n  - nav_menu_item\n  - options_page\n\n**Operator**\n\n`==` or `!=`\n\n```php\n$group-\u003elocation($param, $value); // operator is '==';\n$group-\u003elocation($param, $operator, $value);\n```\n\nA and B\n\n```php\n$group-\u003elocation(\n    [$param, $operator, $value], // A\n    [$param, $operator, $value]  // B\n);\n\n// another\n$group-\u003elocation($param, $operator, $value)  // A\n    -\u003elocation($param, $operator, $value);   // B\n```\n\nA or B\n\n```php\n$group-\u003elocation($param, $operator, $value)   // A\n    -\u003eorLocation($param, $operator, $value);  // B\n```\n\n(A and B) or (C and D)\n\n```php\n$group-\u003elocation(\n        [$param, $operator, $value],  // A\n        [$param, $operator, $value]   // B\n    )-\u003eorLocation(\n        [$param, $operator, $value],  // C\n        [$param, $operator, $value]   // D\n    );\n\n// another\n$group-\u003elocation($param, $operator, $value)  // A\n    -\u003elocation($param, $operator, $value);   // B\n    -\u003eorLocation($param, $operator, $value)  // C\n    -\u003elocation($param, $operator, $value);   // D\n```\n\n#### Renaming / Dropping Field Groups\n\nTo rename an existing field group, use the `rename` method:\n\n```php\nSchema::rename($oldKey, $newKey);\n```\n\nTo drop an existing field group, you may use the `drop` methods:\n\n```php\nSchema::drop($groupKey);\n```\n\n### Fields\n\n#### Creating Fields\n\n```php\nSchema::create($groupKey, function (FieldGroup $group) {\n    $group-\u003etitle('Demo'); // required\n    $group-\u003elocation('post_type', 'post'); // required\n    $group-\u003efields(function($field) {\n        $field-\u003etext('uniqid_name')-\u003elabel('Label');\n    });\n});\n```\n\nAvailable Field Types\n\n```php\n// Basic\n$field-\u003etext('text')-\u003elabel('Text');\n$field-\u003etextarea('textarea')-\u003elabel('Textarea');\n$field-\u003enumber('number')-\u003elabel('Number');\n$field-\u003eemail('email')-\u003elabel('Email');\n$field-\u003eurl('url')-\u003elabel('URL');\n$field-\u003epassword('password')-\u003elabel('Password');\n\n// Content\n$field-\u003ewysiwyg('wysiwyg');\n$field-\u003eoembed('oembed');\n$field-\u003eimage('image');\n$field-\u003efile('file');\n$field-\u003egallery('gallery');\n\n// Choice\n$field-\u003etrue_false('true_false');\n$field-\u003echeckbox('checkbox')-\u003echoices(['value1', 'value2']);\n$field-\u003eradio('radio')-\u003echoices(['value1', 'value2']);;\n$field-\u003eselect('select')-\u003echoices(['value1', 'value2']);;\n\n// Relational\n$field-\u003elink('link');\n$field-\u003epage_link('page_link');\n$field-\u003epost_object('post_object');\n$field-\u003erelationship('relationship');\n$field-\u003etaxonomy('taxonomy');\n$field-\u003euser('user');\n\n// JQuery\n$field-\u003egoogle_map('google_map');\n$field-\u003edate_picker('date_picker');\n$field-\u003edate_time_picker('date_time_picker');\n$field-\u003etime_picker('time_picker');\n$field-\u003ecolor_picker('color_picker');\n\n// Layout\n\n$field-\u003etab('tab');\n$field-\u003emessage('Message')-\u003econtent('Content');\n\n$field-\u003egroup('group')-\u003efields(function($field) {\n    $field-\u003etext('text');\n    $field-\u003eimage('image');\n});\n\n$field-\u003erepeater('repeater')-\u003efields(function($field) {\n    $field-\u003etext('text')-\u003elabel('Text');\n    $field-\u003eimage('image');\n});\n\n$field-\u003eflexible('flexible')-\u003elayouts(function($flexible) {\n    $flexible-\u003elayout('layout1')-\u003elabel('Layout 1')-\u003efields(function($field) {\n        $field-\u003etextarea('textarea')-\u003elabel('Textarea');\n    });\n    $flexible-\u003elayout('layout2')-\u003elabel('Layout 2')-\u003efields(function($field) {\n        $field-\u003etext('text')-\u003elabel('Text');\n    });\n});\n\n// friendly\n$field-\u003eclone('clone')-\u003efields('group');\n$field-\u003eclone('clone')-\u003efields('group.text');\n$field-\u003eclone('clone')-\u003efields('group.text', 'group.textarea');\n\n// strict\n$field-\u003eclone('clone')-\u003efields('group_1b8797f52e1e7731');\n$field-\u003eclone('clone')-\u003efields('field_599ec2068e143');\n$field-\u003eclone('clone')-\u003efields('field_599ec2068e143', 'field_599ec6186b36b');\n```\n\n#### Modifying Fields\n\nUpdating Field Attributes\n\n```php\nSchema::group($groupKey, function (FieldGroup $group) {\n    $group-\u003efields(function($field) {\n        $field-\u003etext('text')-\u003elabel('Text2');\n    });\n});\n```\n\nRenaming Fields\n\n```php\nSchema::group($groupKey, function (FieldGroup $group) {\n    $group-\u003efields(function($field) {\n        $field-\u003erename('oldname', 'newname');\n    });\n});\n```\n\n#### Dropping Fields\n\n```php\nSchema::group($groupKey, function (FieldGroup $group) {\n    $group-\u003efields(function($field) {\n        // single field\n        $field-\u003edrop('text');\n        // multiple fields\n        $field-\u003edrop('text', 'textarea');\n        // all\n        $field-\u003edropAll();\n    });\n});\n```\n\n## Models\n\n```php\nuse LumenPress\\ACF\\Concerns\\HasFields;\n\nclass Post extends \\LumenPress\\Nimble\\Models\\Post\n{\n    use HasFields;\n}\n```\n\n### Inserts\n\n```php\n$post = new Post;\n\n$post-\u003etitle = 'Title1';\n$post-\u003etype = 'post';\n\n$post-\u003eacf-\u003eschema('home_fields');\n\n$post-\u003eacf-\u003etext = 'Text';\n$post-\u003eacf-\u003etextarea = 'Textarea';\n\n$post-\u003esave();\n```\n\n### Updates\n\n```php\n$post = Post::find(2);\n\n$post-\u003eacf-\u003etext = 'Text2';\n$post-\u003eacf-\u003etextarea = 'Textarea2';\n\n$post-\u003esave();\n```\n\n### Deletes\n\n```php\n$post = Post::find(2);\n\nunset($post-\u003eacf-\u003etext);\nunset($post-\u003eacf-\u003etextarea);\n\n$post-\u003esave();\n```\n\n## Builders\n\n```php\n$post = Post::find(2);\n$builder = $post-\u003eacf();\n```\n\n### Retrieving Results\n\n```php\n$post-\u003eacf('abc')-\u003evalue();\n$post-\u003eacf()-\u003etext('abc')-\u003evalue();\n```\n\n### Inserting Values\n\n```php\n$post-\u003eacf()-\u003etext('abc')-\u003einsertValue('Value 1');\n```\n\n### Updating Values\n\n```php\n$post-\u003eacf()-\u003etext('abc')-\u003eupdateValue('Value 2');\n```\n\n### Deleting Values\n\n```php\n$post-\u003eacf('abc')-\u003edelete();\n$post-\u003eacf()-\u003etext('abc')-\u003edelete();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumenpress%2Facf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flumenpress%2Facf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumenpress%2Facf/lists"}