PHPackages                             lumenpress/acf - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. lumenpress/acf

ActiveLibrary[Database &amp; ORM](/categories/database)

lumenpress/acf
==============

v0.2.2(8y ago)195PHPPHP &gt;=5.6.4

Since Oct 2Pushed 8y ago1 watchersCompare

[ Source](https://github.com/lumenpress/acf)[ Packagist](https://packagist.org/packages/lumenpress/acf)[ RSS](/packages/lumenpress-acf/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (7)Versions (8)Used By (0)

Advanced Custom Fields for Nimble
=================================

[](#advanced-custom-fields-for-nimble)

[![Build Status](https://camo.githubusercontent.com/db02f0d8295419153fda3c4945615591988351f01ab09009c110e9608914bbea/68747470733a2f2f7472617669732d63692e6f72672f6c756d656e70726573732f6163662e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/lumenpress/acf) [![StyleCI](https://camo.githubusercontent.com/f49bff24bc094b14b9f65721e5b437a47820a7976f84a78fd37d0d439718d203/68747470733a2f2f7374796c6563692e696f2f7265706f732f39393436333930392f736869656c643f6272616e63683d6d6173746572)](https://styleci.io/repos/99463909)

- [Installation](#installation)
- [Schema](#schema)
    - [Field Groups](#field-groups)
        - [Creating Field Groups](#creating-field-groups)
        - [Renaming / Dropping Field Groups](#renaming--dropping-field-groups)
    - [Fields](#fields)
        - [Creating Fields](#creating-fields)
        - [Modifying Fields](#modifying-fields)
        - [Dropping Fields](#dropping-fields)
- [Models](#models)
    - [Inserts](#inserts)
    - [Updates](#updates)
    - [Deletes](#deletes)
- [Builders](#builders)
    - [Retrieving Results](#retrieving-results)
    - [Inserting Values](#inserting-values)
    - [Updating Values](#updating-values)
    - [Deleting Values](#deleting-values)

Installation
------------

[](#installation)

```
composer require lumenpress/acf

```

Copy the `config/acf.php` file to your local config folder and register the configuration + Service Provider in bootstrap/app.php:

```
$app->configure('acf');
$app->register(LumenPress\ACF\ServiceProvider::class);
```

Schema
------

[](#schema)

### Field Groups

[](#field-groups)

#### Creating Field Groups

[](#creating-field-groups)

```
use LumenPress\ACF\Schema;
use LumenPress\ACF\Models\FieldGroup;

Schema::create($groupKey, function (FieldGroup $group) {
    $group->title('Title'); // required
    $group->location('post_type', 'page'); // required
});
```

The `$groupKey` should be unique, usually have `group_` as a prefix.

```
Schema::create('group_599d8daf5e131', function (FieldGroup $group) {
    $group->title('Title'); // required
    $group->location('post_type', 'page'); // required
});
```

If you do not start with `group_`, the key will be encrypted using md5.

```
Schema::create('home_page', function (FieldGroup $group) {
    $group->title('Home'); // required
    $group->location('post_type', 'page'); // required
});

// algorithm
echo 'group_'.substr(hash('md5', 'home_page'), 8, 16);
// group_3f239af6fe3db5c0
```

Available Field Group Settings

- `$group->title('string')` required
- `$group->location($param, $operator, $value)` required
- `$group->position('normal')`
- `$group->style('default')`
- `$group->label_placement('top')`
- `$group->instruction_placement('label')`
- `$group->hide_on_screen('metabox')`
- `$group->description('string')`
- `$group->order(0)`
- `$group->active(true)` `true` or `false`

**Location**

**Parameters**

- **Post**
    - post\_type
    - post\_template
    - post\_status
    - post\_format
    - post\_category
    - post\_taxonomy
    - post
- **Page**
    - page\_template
    - page\_type
    - page\_parent
    - page
- **User**
    - current\_user
    - current\_user\_role
    - user\_form
    - user\_role
- **Forms**
    - taxonomy
    - attachment
    - comment
    - widget
    - nav\_menu
    - nav\_menu\_item
    - options\_page

**Operator**

`==` or `!=`

```
$group->location($param, $value); // operator is '==';
$group->location($param, $operator, $value);
```

A and B

```
$group->location(
    [$param, $operator, $value], // A
    [$param, $operator, $value]  // B
);

// another
$group->location($param, $operator, $value)  // A
    ->location($param, $operator, $value);   // B
```

A or B

```
$group->location($param, $operator, $value)   // A
    ->orLocation($param, $operator, $value);  // B
```

(A and B) or (C and D)

```
$group->location(
        [$param, $operator, $value],  // A
        [$param, $operator, $value]   // B
    )->orLocation(
        [$param, $operator, $value],  // C
        [$param, $operator, $value]   // D
    );

// another
$group->location($param, $operator, $value)  // A
    ->location($param, $operator, $value);   // B
    ->orLocation($param, $operator, $value)  // C
    ->location($param, $operator, $value);   // D
```

#### Renaming / Dropping Field Groups

[](#renaming--dropping-field-groups)

To rename an existing field group, use the `rename` method:

```
Schema::rename($oldKey, $newKey);
```

To drop an existing field group, you may use the `drop` methods:

```
Schema::drop($groupKey);
```

### Fields

[](#fields)

#### Creating Fields

[](#creating-fields)

```
Schema::create($groupKey, function (FieldGroup $group) {
    $group->title('Demo'); // required
    $group->location('post_type', 'post'); // required
    $group->fields(function($field) {
        $field->text('uniqid_name')->label('Label');
    });
});
```

Available Field Types

```
// Basic
$field->text('text')->label('Text');
$field->textarea('textarea')->label('Textarea');
$field->number('number')->label('Number');
$field->email('email')->label('Email');
$field->url('url')->label('URL');
$field->password('password')->label('Password');

// Content
$field->wysiwyg('wysiwyg');
$field->oembed('oembed');
$field->image('image');
$field->file('file');
$field->gallery('gallery');

// Choice
$field->true_false('true_false');
$field->checkbox('checkbox')->choices(['value1', 'value2']);
$field->radio('radio')->choices(['value1', 'value2']);;
$field->select('select')->choices(['value1', 'value2']);;

// Relational
$field->link('link');
$field->page_link('page_link');
$field->post_object('post_object');
$field->relationship('relationship');
$field->taxonomy('taxonomy');
$field->user('user');

// JQuery
$field->google_map('google_map');
$field->date_picker('date_picker');
$field->date_time_picker('date_time_picker');
$field->time_picker('time_picker');
$field->color_picker('color_picker');

// Layout

$field->tab('tab');
$field->message('Message')->content('Content');

$field->group('group')->fields(function($field) {
    $field->text('text');
    $field->image('image');
});

$field->repeater('repeater')->fields(function($field) {
    $field->text('text')->label('Text');
    $field->image('image');
});

$field->flexible('flexible')->layouts(function($flexible) {
    $flexible->layout('layout1')->label('Layout 1')->fields(function($field) {
        $field->textarea('textarea')->label('Textarea');
    });
    $flexible->layout('layout2')->label('Layout 2')->fields(function($field) {
        $field->text('text')->label('Text');
    });
});

// friendly
$field->clone('clone')->fields('group');
$field->clone('clone')->fields('group.text');
$field->clone('clone')->fields('group.text', 'group.textarea');

// strict
$field->clone('clone')->fields('group_1b8797f52e1e7731');
$field->clone('clone')->fields('field_599ec2068e143');
$field->clone('clone')->fields('field_599ec2068e143', 'field_599ec6186b36b');
```

#### Modifying Fields

[](#modifying-fields)

Updating Field Attributes

```
Schema::group($groupKey, function (FieldGroup $group) {
    $group->fields(function($field) {
        $field->text('text')->label('Text2');
    });
});
```

Renaming Fields

```
Schema::group($groupKey, function (FieldGroup $group) {
    $group->fields(function($field) {
        $field->rename('oldname', 'newname');
    });
});
```

#### Dropping Fields

[](#dropping-fields)

```
Schema::group($groupKey, function (FieldGroup $group) {
    $group->fields(function($field) {
        // single field
        $field->drop('text');
        // multiple fields
        $field->drop('text', 'textarea');
        // all
        $field->dropAll();
    });
});
```

Models
------

[](#models)

```
use LumenPress\ACF\Concerns\HasFields;

class Post extends \LumenPress\Nimble\Models\Post
{
    use HasFields;
}
```

### Inserts

[](#inserts)

```
$post = new Post;

$post->title = 'Title1';
$post->type = 'post';

$post->acf->schema('home_fields');

$post->acf->text = 'Text';
$post->acf->textarea = 'Textarea';

$post->save();
```

### Updates

[](#updates)

```
$post = Post::find(2);

$post->acf->text = 'Text2';
$post->acf->textarea = 'Textarea2';

$post->save();
```

### Deletes

[](#deletes)

```
$post = Post::find(2);

unset($post->acf->text);
unset($post->acf->textarea);

$post->save();
```

Builders
--------

[](#builders)

```
$post = Post::find(2);
$builder = $post->acf();
```

### Retrieving Results

[](#retrieving-results)

```
$post->acf('abc')->value();
$post->acf()->text('abc')->value();
```

### Inserting Values

[](#inserting-values)

```
$post->acf()->text('abc')->insertValue('Value 1');
```

### Updating Values

[](#updating-values)

```
$post->acf()->text('abc')->updateValue('Value 2');
```

### Deleting Values

[](#deleting-values)

```
$post->acf('abc')->delete();
$post->acf()->text('abc')->delete();
```

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

7

Last Release

3158d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2993310?v=4)[chenos](/maintainers/chenos)[@chenos](https://github.com/chenos)

---

Top Contributors

[![chenos](https://avatars.githubusercontent.com/u/2993310?v=4)](https://github.com/chenos "chenos (81 commits)")

---

Tags

acfeloquentwordpress

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lumenpress-acf/health.svg)

```
[![Health](https://phpackages.com/badges/lumenpress-acf/health.svg)](https://phpackages.com/packages/lumenpress-acf)
```

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k116.5M113](/packages/jdorn-sql-formatter)[propel/propel1

Propel is an open-source Object-Relational Mapping (ORM) for PHP5.

8351.6M87](/packages/propel-propel1)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
