forked from acf-extended/ACF-Extended
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreadme.txt
More file actions
1597 lines (1262 loc) · 104 KB
/
readme.txt
File metadata and controls
1597 lines (1262 loc) · 104 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=== Advanced Custom Fields: Extended ===
Contributors: hwk-fr
Donate link: https://ko-fi.com/acfextended
Tags: acf, custom fields, meta, admin, fields, form, repeater, content
Requires at least: 4.9
Tested up to: 5.4
Requires PHP: 5.6
Stable tag: 0.8.7
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
All-in-one enhancement suite that improves WordPress & Advanced Custom Fields.
== Description ==
🚀 All-in-one enhancement suite that improves WordPress & Advanced Custom Fields. This plugin aims to provide a powerful administration framework with a wide range of improvements & optimizations.
== ⭐ Highlight ==
* New Field Groups Locations
* 14+ New ACF Fields
* 10+ ACF Fields Enhanced
* Self/Multi/Bidirectional Fields
* Advanced Fields Validation
* Flexible Content as Page Builder
* Compress ACF values into a single metadata
* ACF Forms Manager
* ACF Options Pages / Block Types Manager
* ACF & WordPress Meta Overview
* WordPress Post Types / Taxonomies Manager
* WordPress Options Manager
* WordPress Admin Enhancements
* WPML & Polylang Multilingual support
* ... And many more features
== 🤟 Philosophy ==
* 100% free
* Seamless integration
* No extra menu, ads or notices
* Built by developers, for developers
== 🛠️ Links ==
* Join the [ACF Slack community](https://join.slack.com/t/wpacf/shared_invite/enQtODc2MjczMzM3NzQ1LTQxNmY2ZGY3OTU2NDkxNTliYmNhMmY1NDMwZGM4NmYxNzgwZTI5MDUzMDFlMGQ5YzcwNDc0ZWM0MDVmODI4NmI)
* Check the [ACF Extended Trello board](https://trello.com/b/QEgpU7CL/acf-extended)
* Visit our website [ACF-Extended.com](https://www.acf-extended.com) (WIP)
* Have a question? [Check the FAQ](https://wordpress.org/plugins/acf-extended/#faq)
* Found a bug? [Submit a ticket](https://wordpress.org/support/plugin/acf-extended)
* A feature request? [Submit an idea](https://wordpress.org/support/plugin/acf-extended)
* Want to fork me? [GitHub repository](https://github.com/acf-extended/ACF-Extended)
* Enjoying this plugin? [Submit a review](https://wordpress.org/support/plugin/acf-extended/reviews/#new-post)
* Want to keep me awake? [Buy me a coffee](https://ko-fi.com/acfextended)
* Want to follow me? [Here is my Twitter](https://twitter.com/hwkfr)
== 📺 Flexible Content Showcase ==
[youtube https://www.youtube.com/watch?v=hzkNL0BA3Dk]
== 📝 Requirements ==
**This plugin requires at least ACF Pro 5.7.10**
If you don't already own [ACF Pro](https://www.advancedcustomfields.com/pro/), you should consider it. It's one of the most powerful WordPress plugin available.
== 🏷️ Features ==
== ACF: Field Groups Settings ==
* **Auto Sync PHP**
Automatically synchronize field groups with local PHP files upon field group updates. This feature will create, include and update a local PHP file for each field group (just like the native Json sync feature).
Default folder: `/wp-content/themes/my-theme/acfe-php/`
* **Auto Sync Json**
Control which field groups you want to synchronize with local Json files. Display warnings if the Json file has been manually deleted. Manually synchronize Json from field group screen.
* **Categories**
Spice up your field groups with a custom taxonomy and filter field groups by terms.
* **Permissions**
Add permission layer to field groups. Choose which roles can view & edit field groups in the post edition screen.
* **Alternative Title**
Display an alternative field group title in post edition screen.
* **Note**
Add a personal note in the field group administration. Only visible to administrators
* **Custom meta data**
Add custom metas (key/value) in the field group administration. Data can be retrieved using `acf_get_field_group()`
* **View raw data**
Display raw field group data in a modal to check your configuration & settings
* **Custom key**
Set custom field group key. ie: `group_custom_name`
* **Hide on Screen: Block Editor**
Choose to disable Block Editor (Gutenberg) on the field group location
* **Advanced settings**
Enable advanced fields settings & validation based on screen (administration/front-end). See fields advanced settings/validation
* **New field group instructions placement: Tooltip**
Display instructions in a tooltip which is displayed when hovering an information icon
* **New field group location: All post types**
Display field group on all post types edition screen
* **New field group location: Post type List**
Display field group on post types admin list screen. Fields are saved in the option: `{post_type}_options`
* **New field group location: Taxonomy List**
Display field group on taxonomies admin list screen. Fields are saved in the option: `tax_{taxonomy}_options`
* **New field group location: Post type Archive**
Display field group on the post type archive (option page). The post type argument `acfe_admin_archive` must be set to `true`. This feature is also available in the Dynamic Post Type UI. Fields are saved in the option: `{post_type}_archive`
== ACF: Field Groups List ==
* **Column: Category**
Display and filter field groups categories
* **Column: Locations**
Quick view of field groups locations information using icons & popover
* **Column: Load**
Quick view of field groups data load source (DB, PHP or Json)
* **Column: Sync PHP / Json**
Quick view of field groups synchronization status with warnings
* **Row action: Export PHP / Json**
One-click export for each field groups
* **Row action: Field group key**
Quick view of field groups keys
== ACF: Field Groups - Local ==
* **Local**
Display local field groups that are loaded by ACF, but not available in the ACF field group administration. Example: a field group is registered locally in the `functions.php` file, but not in ACF
* **Export**
Export local field groups into PHP or Json
* **Sync**
Sync local field groups back to the database and edit their fields just like any other field group
== ACF: Fields Settings ==
* **Bidirectional fields**
An advanced bidirectional setting (also called post-to-post) is available for the following fields: Relationship, Post object, User & Taxonomy terms.
Fields will work bidirectionally and automatically update each others. Works in groups & clones (prefixed field names must be turned off).
It is possible to link a field on itself, allowing self-bidirectional save.
[Usage example is available in the FAQ](#faq)
* **Advanced settings**
A more sophisticated field settings based on specified location (administration/front-end). Example: Field is required only in front-end. The field group "Advanced settings" must be turned ON.
* **Advanced validation**
A more sophisticated validation conditions (AND/OR) with custom error messages based on specified location (administration/front-end). The field group "Advanced settings" must be turned ON.
* **Permissions**
Add permission layer to fields. Choose which roles can view & edit fields in the post edition screen. (can be combined with field groups permissions)
* **Save as Meta**
Exclude the field from the "Single Meta Save" compression feature. The global ACF setting "Single Meta Save" must be turned ON.
* **View raw data**
Display raw field data in a modal to check your configuration & settings
== ACF: Fields ==
* **Field Clone: Edit in modal**
Allow users to edit clone fields in a modal. Choose the edit button text, display close button and the modal size
* **Field Datepicker/Datetime picker/Timepicker: Improved UI**
Fields interfaces have been improved to display a more modern version
* **Field File: Uploader type**
Choose the uploader type: Basic or native WP uploader
* **Field Group: Edit in modal**
Allow users to edit group fields in a modal Choose the edit button text, display close button and the modal size
* **Field Image: Use as Featured Thumbnail**
Choose if an image field should be considered as post featured thumbnail
* **Field Image: Uploader type**
Choose the uploader type: Basic or native WP uploader
* **Field Post Object: Allow custom values**
Allow user to enter custom value which will be saved as a new post
* **Field Repeater: Stylised button**
Add style to 'Add Row' button
* **Field Repeater: Disable Sortable**
Disable sortable rows using `filter('acfe/repeater/lock/name=my_repeater', true, $field)`
* **Field Repeater: Remove Actions**
Remove the actions buttons using `filter('acfe/repeater/remove_actions/name=my_repeater', true, $field)`
* **Field Select: Placeholder**
Change the default "Select" placeholder text and Search Input placeholder
* **Field Select: Allow custom values**
Allow user to enter custom value which will be saved
* **Field Textarea: Code mode**
Switch font family to monospace and allow tab indent
== ACF: New Fields ==
* **New Field: Advanced Link**
Display a modern Link Selection in a modal. Posts, Post Types Archives & terms selection can be filtered in the field administration. Add custom sub fields using `filter('acfe/fields/advanced_link/sub_fields', $sub_fields, $field, $value)`
* **New Field: Button**
Display a custom submit or button. Built-in ajax call setting. Usage example available in the field administration
* **New Field: Code Editor**
Edit code using the native WP Core Codemirror library. Default languages: Text/HTML, Javascript, CSS, PHP mixed/plain.
* **New Field: Columns**
Re-arrange fields administration using columns
* **New Field: Dynamic form**
Select any dynamic form (format: checkbox, radio or select). See ACF: Dynamic Forms section
* **New Field: Dynamic message**
Display custom HTML/PHP content using `acf/render_field/name=my_field`. Example is available in the field administration
* **New Field: Google reCaptcha**
Display a reCaptcha field (compatible v2 & v3)
* **New Field: Hidden input**
Display a hidden input with custom name/value
* **New Field: Post status selection**
Select any post status (format: checkbox, radio or select)
* **New Field: Post type selection**
Select any post type (format: checkbox, radio or select)
* **New Field: Slug**
A slug text input (ie: `my-text-input`)
* **New Field: Taxonomy selection**
Select any taxonomy (format: checkbox, radio or select)
* **New Field: Taxonomy Terms selection**
Select any terms of any taxonomies, allow specific terms, level or childrens (format: checkbox or select). Terms can be loaded & saved for the current post (just like the native ACF Taxonomy field)
* **New Field: User roles selection**
Select any user role (format: checkbox, radio or select)
== WordPress: Dynamic Post Types ==
Create and manage post types from your WordPress administration (Tools > Post Types). All WordPress post types arguments can be set and managed. But also:
* Manage Posts per page, order by and order for the post type archive
* Manage Posts per page, order by and order for the post type administration screen
* Set custom single template (ie: `my-single.php`) instead of the native `single-{post_type}.php`
* Set custom archive template (ie: `my-archive.php`) instead of the native `archive-{post_type}.php`
* Add an Archive Option Page under the post type menu and set your field groups
* Manual PHP/Json Import & Export is available in the ACF > Tools page
== WordPress: Dynamic Taxonomies ==
Create and manage taxonomies from your WordPress administration (Tools > Taxonomies). All WordPress taxonomies arguments can be set and managed. But also:
* Manage Posts per page, order by and order for the taxonomy term archive
* Manage Posts per page, order by and order for the taxonomy administration screen
* Set custom taxonomy template (ie: `my-taxonomy.php`) instead of the native `taxonomy-{taxonomy}.php`
* Manual PHP/Json Import & Export is available in the ACF > Tools page
== WordPress: Ajax Author Box ==
The native WP Author Metabox has been replaced with a dynamic version allowing to manage thousands of users without slowing down the post administration.
== WordPress: Enhanced UI ==
Taxonomies list/edit, User edit/add and General Settings views have been enhanced for a more consistent administration experience, using CSS/JS only.
== WordPress: Options ==
Manage WordPress options from Settings > Options.
* View, add, edit and delete options
* Working with strings, serialized & Json values
== ACF: Settings ==
* **ACF: Settings page**
Display all ACF settings in one page.
* **ACF Extended: Settings page**
Display all ACF Extended settings in one page.
== ACF: Dev Mode ==
View all custom Posts, Terms, Users & Options meta in a readable format
* Print Arrays & Json values
* Delete/Bulk delete any meta
* ACF fields meta are grouped together
* ACF field groups related to fields are displayed when available
* Dev mode also enable `SCRIPT_DEBUG`
* Activate using `acf_update_setting('acfe/dev', true)` or `define('ACFE_dev', true)`
== ACF: Options Pages ==
Manage ACF Options Pages from ACF > Options.
* View, add, edit and delete options pages
* All arguments are available
* Manual PHP/Json Import & Export is available in the ACF > Tools page
== ACF: Block Types (Gutenberg) ==
Manage ACF Block Types from ACF > Block Types.
* View, add, edit and delete Block Types
* All arguments are available
* Manual PHP/Json Import & Export is available in the ACF > Tools page
* Requires ACF Pro 5.8
== ACF: Flexible Content Enhancement ==
* Controls: Inline Layout Title Edition
* Controls: Copy, Paste & Duplicate Layouts on the fly
* Controls: Copy & Paste all layouts on the fly
* Stylised Button: Add style to 'Add Row' button
* Hide Empty Message: Hide the native Flexible Content 'Empty' message
* Empty Message: Change the native Flexible Content 'Click the Add Row button below...' message
* Layouts Thumbnails: Add thumbnails for each layout in the layout selection
* Layouts Settings: Choose a field group to clone and to be used as a layout configuration modal in the administration. Data can be retrieved using `while(have_settings()): the_setting(); get_sub_field('my_setting');`
* Layouts Render: Add `template.php`, `style.css` & `script.js` files settings for each layout. Those settings can be then accessed in the front-end ([More information in the FAQ](#faq))
* Layouts Dynamic Preview: Edit & Preview Layouts on-the-fly from your WordPress administration, just like in Gutenberg (Layouts Render must be turned ON)
* Modal Edition: Edit layouts in a modal
* Modal Selection: Change the layout selection into a modal
* Modal Selection Title: Change the layout modal title
* Modal Selection Columns: Change the layout modal columns grid. 1, 2, 3, 4, 5 or 6 columns available
* Modal Selection Categories: Add category for each layout in the layout modal
* Modal Settings: Clone field groups and display them as a layout settings modal
* Layouts Toggle: Hide specific layouts from the front-end
* Layouts State: Force layouts to be collapsed or opened by default
* Layouts Collapse: Remove collapse action
* Layouts: Hide "Add Layout" buttons
* Layouts: Hide "Remove Layout" buttons. Can also be done using `filter('acfe/flexible/remove_actions/name=my_flexible', true, $field)`
* Lock Layouts: Disable sortable Layouts. Can also be done using `filter('acfe/flexible/lock/name=my_flexible', true, $field)`
* Button Label: Supports Dashicons icons elements `<span>`
* One Click: the 'Add row' button will add a layout without the selection modal if there is only one layout available in the flexible content
* Asynchronous Layouts: Add layouts using Ajax method. This setting increase performance on complex Flexible Content
* Disable Legacy Layout Title Ajax: Disable the native ACF Layout Title Ajax call on `acf/fields/flexible_content/layout_title`.
== ACF: Dynamic Forms ==
Manage ACF Forms from your WordPress administration. All ACF Form settings are available. But also:
* Render multiple field groups in one single form with custom HTML between them
* Apply custom CSS class to all fields & wrappers
* Apply custom CSS class to fields errors
* Group errors above the form, display them above fields, below fields or hide them
* Hide form on successful submission
* Map fields and change their settings based on the location (front-end/back-end)
* Add multiple actions on form submission:
* Create or Update Posts
* Create or Update Terms
* Create Update, or Log Users
* Send multiple e-mails
* Trigger custom PHP actions
* Integration, validation & custom submission examples in the administration
* Display forms using `acfe_form('my_form_name')` or `acfe_form(188)` helpers
* Display forms using shortcodes `[acfe_form name="my_form_name"]` or `[acfe_form ID="188"]`
* The function `acf_form_head()` is not needed anymore
* Manual Import & Export is available in the ACF > Tools page
== WPML & Polylang Multilangual ==
Advanced Custom Fields comes with a WPML compatibility module for Fields, Field Groups & Options Page ID. However, it will only take care of Options Pages with the default `options` post id. When WPML is enabled, ACF will translate the post id to `options_{lang}`. ie: `options_en`.
ACF Extended adds a new layer of compatibility for both WPML & Polylang. Options Pages post ids and all ACF Extended Modules (Dynamic Post Type, Taxonomy, Options Pages, Block Type) are now compatible.
= WPML =
Options Pages with custom post id are automatically translated. ie: `my-theme` will become `my-theme_en` when switching language. If an Options Page was manually registered with a custom post id including a language code at the end, then the post id won't be translated.
Dynamic Post Type, Taxonomy, Options Pages & Block Type items are automatically registered as WPML string, and can be translated using the WPML String Translation module.
= Polylang =
Options Pages with custom post id are automatically translated. ie: `my-theme` will become `my-theme_en_US` when switching language. If an Options Page was manually registered with a custom post id including a language code at the end, then the post id won't be translated. The module is also compatible with the [ACF Options for Polylang](https://wordpress.org/plugins/acf-options-for-polylang/) plugin.
Dynamic Post Type, Taxonomy, Options Pages & Block Type items are automatically registered as Polylang strings, and can be translated using the Polylang String Translation module.
== ACF: Single Meta Save (Beta) ==
Compress all fields values from the current post, term, user or options into one single meta data. This process lighten the database load as values are saved and read from one single row. Once activated and after saving a post/term/user in the administration, all old meta data will be removed and packed together in a meta called `acf`.
To monitor the process, it is possible to enable the "ACF Extended: Dev Mode" which will display all WP & ACF meta data on every Posts, Terms, Users & Options.
This feature also enables a new setting available in every fields: "Save as individual meta". If this setting is turned ON on a specific field, then the value will be saved individually. `WP Queries` and `Meta Queries` can be used just like before.
Single Meta Save is disabled by default. To enable it, add the following code in your `functions.php` file:
`
add_action('acf/init', 'my_acfe_modules');
function my_acfe_modules(){
// Enable Single Meta Save
acfe_update_setting('modules/single_meta', true);
}
// Enable Single Meta Save on specific Post Types only (default: all)
add_filter('acfe/modules/single_meta/post_types', 'my_acfe_single_meta_post_types');
function my_acfe_single_meta_post_types($post_types){
$post_types = array('page', 'my-post-type');
// Disable all post types:
// return false;
return $post_types;
}
// Enable Single Meta Save on specific Taxonomies only (default: all)
add_filter('acfe/modules/single_meta/taxonomies', 'my_acfe_single_meta_taxonomies');
function my_acfe_single_meta_taxonomies($taxonomies){
$taxonomies = array('category', 'my-taxonomy');
// Disable all taxonomies:
// return false;
return $taxonomies;
}
// Enable Single Meta Save on specific Options ID (default: disabled)
add_filter('acfe/modules/single_meta/options', 'my_acfe_single_meta_options');
function my_acfe_single_meta_options($options_ids){
$options_ids = array('options', 'my-option-id');
// Disable all options id (default):
// return false;
return $options_ids;
}
`
Note: It is possible to revert back to the native ACF save process. To do so, keep the feature enabled, get in the post administration you want to revert back. Disable the feature in your code, and save the post. All data will be saved back to individual meta data.
== ❤️ Early Supporters ==
* Thanks to [Brandon A.](https://twitter.com/AsmussenBrandon) for his support & tests
* Thanks to [Damien C.](https://twitter.com/DamChtlv) for his support & tests
* Thanks to [Valentin P.](https://twitter.com/Val_Pellegrin) for his support & tests
* Thanks to Damian P. for his support & tests
* Thanks to [Jaakko S.](https://twitter.com/jsaarenk) for his support & tests
* Thanks to [Renan A.](https://twitter.com/altendorfme) for his support & tests
== 🥰 Donators ==
* Thanks to RavenSays
* Thanks to Dave A.
* Thanks to Rob H.
* Thanks to Valentin P.
* Thanks to Alan A.
* Thanks to Damian C.
* Thanks to Andrew
* Thanks to Kimantis
* Thanks to Anonymous
* Thanks to Chris
* Thanks to Dennis D.
== Installation ==
= Wordpress Install =
1. Install Advanced Custom Fields: Pro
2. Upload the plugin files to the `/wp-content/plugins/advanced-custom-fields-extended` directory, or install the plugin through the WordPress plugins screen directly.
3. Activate the plugin through the 'Plugins' screen in WordPress.
4. Everything is ready!
== Frequently Asked Questions ==
= How to enable PHP Auto Sync? =
Create a folder `/acfe-php/` in your theme. Go to your field group administration, check to 'Sync PHP' option in the sidebar and save the field group.
= How to disable PHP/Json Auto Sync? =
Once you activated PHP or Json Sync on a field group, you must manually delete the file `group_xxxxxxxxxx` in your theme folder in order disable it. This behavior is applied to avoid any data desynchronization.
= How to get fields set in the Post Type List location? =
Fields are saved in the option: `{post_type}_options`. Frontend usage example: `get_field('my_field', 'page_options')`
= How to get fields set in the Taxonomy List location? =
Fields are saved in the option: `tax_{taxonomy}_options`. Frontend usage example: `get_field('my_field', 'tax_category_options')`
= How to activate the Post Type Archive location? =
The post type archive location is a virtual option page created under the post type menu of your choice. In order to activate this feature, you must set `acfe_admin_archive => true` in the `register_post_type()` declaration. Once activated, a new submenu called "Archive" will appear under the said post type. Then, you'll be able to set this location in any field group.
Note: This feature is available in the Dynamic Post Type UI in the Administration > Tools > Post Types, under the "Admin" tab.
= How to get fields set in the Post Type Archive location? =
Fields are saved in the option: `{post_type}_archive`. Frontend usage example: `get_field('my_field', 'post_archive')`.
You can also using the following code in any Post Type Archive/Single Template:
`
if(have_archive()):
while(have_archive()): the_archive();
// Retrieve 'my_field' from the current Post Type Archive Page
echo get_field('my_field');
endwhile;
endif;
`
Or you can also pass a post type, in order to retrieve fields from specific Post Type Archive Page:
`
if(have_archive('my-post-type')):
while(have_archive('my-post-type')): the_archive();
// Retrieve 'my_field' from "My Post Type" - Archive Page
echo get_field('my_field');
endwhile;
endif;
`
= How the bidirectional field setting works? =
Usage example:
* Create a field group "Page: Relation" displaying on the post type: page
* Inside it, create a relationship field, allowing the post type: post
* Create an another field group "Post: Relation" displaying on the post type: post
* Inside it, create a relationship field, allowing the post type: page
* Activate the "Bidirectional" setting and select the "Page: Relation" relationship field
* Edit any page, and select any post of the post type post in the relationship field
* The page is now also saved in the said post relationship field
= How to migrate existing data with the bidirectional field setting? =
The bidirectional setting has been designed to be optimized in terms of performance. Which means that it checks if the old value is different from the new one, to avoid saving and re-saving the same existing value on each update.
If there is already existing data before the activation of the setting, you'll have to perform a maintenance on the concerned posts.
First, enable the filter to force update on both side. This will bypass the existing value check.
`
add_filter('acfe/bidirectional/force_update/name=my_field', '__return_true');
`
You can then head over the admin, and save each one of the posts. Additionally, you can create a script in order to populate all the values automatically. Here is a code example:
`
add_action('admin_init', 'my_update_all_post_meta');
function my_update_all_post_meta(){
// Retrieve all pages
$get_posts = get_posts(array(
'post_type' => 'page', // Post Type: page
'posts_per_page' => -1,
'fields' => 'ids',
));
// Bail early if no post was found
if(empty($get_posts))
return;
// Force bidirectional update
add_filter('acfe/bidirectional/force_update/name=my_field', '__return_true');
foreach($get_posts as $post_id){
// Retrieve Data
$my_field = get_field('my_field', $post_id, false);
// Update Data
update_field('my_field', $my_field, $post_id);
}
add_filter('acfe/bidirectional/force_update/name=my_field', '__return_false');
}
`
= How to use Flexible Content: Templates, Styles & Scripts render? =
Templates, styles & scripts settings are saved in each layouts. They can be accessed manually via `get_field('my_flexible')` for example.
The settings are saved in the following keys: `acfe_flexible_render_template`, `acfe_flexible_render_style` and `acfe_flexible_render_script`.
ACF Extended has two functions which will automatically include those files: `echo get_flexible($selector, $post_id)` or `the_flexible($selector, $post_id)` (`$post_id` is optional).
Usage example: `the_flexible('my_flexible');`.
When using this function, you have access to the following global variables: `$layout`, `$field` & `$is_preview` (when Dynamic Preview setting is enabled).
[More information are available on the official website](https://www.acf-extended.com/post/flexible-content-dynamic-layout-preview)
= How the Flexible Content: Dynamic Preview works? =
[More information are available on the official website](https://www.acf-extended.com/post/flexible-content-dynamic-layout-preview)
= How to change the Flexible Content: Thumbnails URL in PHP? =
You can use the following filters:
`
// add_filter('acfe/flexible/thumbnail/name=my_flexible', 'acf_flexible_layout_thumbnail', 10, 3);
// add_filter('acfe/flexible/thumbnail/key=field_xxxxxx', 'acf_flexible_layout_thumbnail', 10, 3);
// add_filter('acfe/flexible/thumbnail/name=my_flexible&layout=my_layout', 'acf_flexible_layout_thumbnail', 10, 3);
// add_filter('acfe/flexible/thumbnail/key=field_xxxxxx&layout=my_layout', 'acf_flexible_layout_thumbnail', 10, 3);
add_filter('acfe/flexible/thumbnail/layout=my_layout', 'acf_flexible_layout_thumbnail', 10, 3);
function acf_flexible_layout_thumbnail($thumbnail, $field, $layout){
// Must return an URL or Attachment ID
return 'https://www.example.com/my-image.jpg';
}
`
= How to change the Flexible Content: Dynamic Render/Preview content in PHP? =
You can use the following actions:
`
// add_filter('acfe/flexible/render/template/name=my_flexible', 'acf_disable_file_render', 10, 4);
// add_filter('acfe/flexible/render/template/key=field_xxxxxx', 'acf_disable_file_render', 10, 4);
// add_filter('acfe/flexible/render/template/name=my_flexible&layout=my_layout', 'acf_disable_file_render', 10, 4);
// add_filter('acfe/flexible/render/template/key=field_xxxxxx&layout=my_layout', 'acf_disable_file_render', 10, 4);
add_filter('acfe/flexible/render/template/layout=my_layout', 'acf_disable_file_render', 10, 4);
function acf_disable_file_render($file, $field, $layout, $is_preview){
// Do not include the template file
return false;
}
// add_action('acfe/flexible/render/before_template/name=my_flexible', 'acf_custom_layout_render', 10, 3);
// add_action('acfe/flexible/render/before_template/key=field_xxxxxx', 'acf_custom_layout_render', 10, 3);
// add_action('acfe/flexible/render/before_template/name=my_flexible&layout=my_layout', 'acf_custom_layout_render', 10, 3);
// add_action('acfe/flexible/render/before_template/key=field_xxxxxx&layout=my_layout', 'acf_custom_layout_render', 10, 3);
add_action('acfe/flexible/render/before_template/layout=my_layout', 'acf_custom_layout_render', 10, 3);
function acf_custom_layout_render($field, $layout, $is_preview){
echo get_sub_field('my_field');
}
`
= How to enqueue new style/script files in the Flexible Content in PHP? =
You can use the following actions:
`
// add_action('acfe/flexible/enqueue/name=my_flexible', 'acf_flexible_enqueue', 10, 2);
// add_action('acfe/flexible/enqueue/key=field_xxxxxx', 'acf_flexible_enqueue', 10, 2);
add_action('acfe/flexible/enqueue', 'acf_flexible_enqueue', 10, 2);
function acf_flexible_enqueue($field, $is_preview){
// Only in Ajax preview
if($is_preview){
wp_enqueue_style('my-style-preview', 'https://www.example.com/style-preview.css');
}
wp_enqueue_style('my-style', 'https://www.example.com/style.css');
}
// add_action('acfe/flexible/enqueue/name=my_flexible&layout=my_layout', 'acf_flexible_enqueue', 10, 3);
// add_action('acfe/flexible/enqueue/key=field_xxxxxx&layout=my_layout', 'acf_flexible_enqueue', 10, 3);
add_action('acfe/flexible/enqueue/layout=my_layout', 'acf_flexible_enqueue', 10, 3);
function acf_flexible_enqueue($field, $layout, $is_preview){
// Only in Ajax preview
if($is_preview){
wp_enqueue_style('my-style-preview', 'https://www.example.com/style-preview.css');
}
wp_enqueue_style('my-style', 'https://www.example.com/style.css');
}
`
= How to change the Flexible Content: Layout Render Paths in PHP? =
You can use the following actions:
`
// add_filter('acfe/flexible/render/template', 'acf_flexible_layout_render_template', 10, 4);
// add_filter('acfe/flexible/render/template/name=my_flexible', 'acf_flexible_layout_render_template', 10, 4);
// add_filter('acfe/flexible/render/template/key=field_xxxxxx', 'acf_flexible_layout_render_template', 10, 4);
// add_filter('acfe/flexible/render/template/name=my_flexible&layout=my_layout', 'acf_flexible_layout_render_template', 10, 4);
// add_filter('acfe/flexible/render/template/key=field_xxxxxx&layout=my_layout', 'acf_flexible_layout_render_template', 10, 4);
add_filter('acfe/flexible/render/template/layout=my_layout', 'acf_flexible_layout_render_template', 10, 4);
function acf_flexible_layout_render_template($template, $field, $layout, $is_preview){
// Only in Ajax preview
if($is_preview){
return get_stylesheet_directory() . '/my-template-preview.php';
}
return get_stylesheet_directory() . '/my-template.php';
}
// add_filter('acfe/flexible/render/style', 'acf_flexible_layout_render_style', 10, 4);
// add_filter('acfe/flexible/render/style/name=my_flexible', 'acf_flexible_layout_render_style', 10, 4);
// add_filter('acfe/flexible/render/style/key=field_xxxxxx', 'acf_flexible_layout_render_style', 10, 4);
// add_filter('acfe/flexible/render/style/name=my_flexible&layout=my_layout', 'acf_flexible_layout_render_style', 10, 4);
// add_filter('acfe/flexible/render/style/key=field_xxxxxx&layout=my_layout', 'acf_flexible_layout_render_style', 10, 4);
add_filter('acfe/flexible/render/style/layout=my_layout', 'acf_flexible_layout_render_style', 10, 4);
function acf_flexible_layout_render_style($style, $field, $layout, $is_preview){
// Only in Ajax preview
if($is_preview){
return get_stylesheet_directory_uri() . '/my-style-preview.css';
}
return get_stylesheet_directory_uri() . '/my-style.css';
}
// add_filter('acfe/flexible/render/script', 'acf_flexible_layout_render_script', 10, 4);
// add_filter('acfe/flexible/render/script/name=my_flexible', 'acf_flexible_layout_render_script', 10, 4);
// add_filter('acfe/flexible/render/script/key=field_xxxxxx', 'acf_flexible_layout_render_script', 10, 4);
// add_filter('acfe/flexible/render/script/name=my_flexible&layout=my_layout', 'acf_flexible_layout_render_script', 10, 4);
// add_filter('acfe/flexible/render/script/key=field_xxxxxx&layout=my_layout', 'acf_flexible_layout_render_script', 10, 4);
add_filter('acfe/flexible/render/script/layout=my_layout', 'acf_flexible_layout_render_script', 10, 4);
function acf_flexible_layout_render_script($script, $field, $layout, $is_preview){
// Only in Ajax preview
if($is_preview){
return get_stylesheet_directory_uri() . '/my-script-preview.js';
}
return get_stylesheet_directory_uri() . '/my-script.js';
}
`
= How to change PHP AutoSync Load/Save paths? =
PHP AutoSync settings are very similar to the native ACF Json settings. To alter load/save paths, you can use the following method:
`
// PHP Autosync: Save path
add_filter('acfe/settings/php_save', 'my_acfe_php_save_point');
function my_acfe_php_save_point($path){
// update path
$path = get_stylesheet_directory() . '/my-custom-folder';
// return
return $path;
}
// PHP Autosync: Load paths
add_filter('acfe/settings/php_load', 'my_acfe_php_load_point');
function my_acfe_php_load_point($paths){
// remove original path (optional)
unset($paths[0]);
// append path
$paths[] = get_stylesheet_directory() . '/my-custom-folder';
// return
return $paths;
}
`
= How to disable specific ACF Extended modules? (Dynamic Post Types, Taxonomies, Options Pages etc...) =
You can use the following action:
`
add_action('acf/init', 'my_acfe_modules');
function my_acfe_modules(){
// Disable Ajax Author box
acfe_update_setting('modules/author', false);
// Disable ACF > Block Types
acfe_update_setting('modules/dynamic_block_types', false);
// Disable Forms
acfe_update_setting('modules/dynamic_forms', false);
// Disable Tools > Post Types
acfe_update_setting('modules/dynamic_post_types', false);
// Disable Tools > Taxonomies
acfe_update_setting('modules/dynamic_taxonomies', false);
// Disable ACF > Options Pages
acfe_update_setting('modules/dynamic_options_pages', false);
// Disable Settings > Options
acfe_update_setting('modules/options', false);
// Disable Enhanced UI (Taxonomies, Users, Settings)
acfe_update_setting('modules/ui', false);
// Disable Multilangual Compatibility
acfe_update_setting('modules/multilang', false);
}
`
== Screenshots ==
1. Flexible Content Preview
2. Flexible Content Modal
3. Field Groups List
4. Field Group
5. Dynamic Post Type
6. Dynamic Taxonomy
7. Dynamic Options Pages
8. Dynamic Block Types
9. Field
10. ACF Settings
== Changelog ==
= 0.8.7 =
* General: ACF 5.9 Compatibility - Modules - Added the ACF 5.9 Header menu
* General: ACF 5.9 Compatibility - Field Groups - Removed ACFE "Locations" column
* General: ACF 5.9 Compatibility - Field Groups - Removed ACFE "Json Sync" column
* General: ACF 5.9 Compatibility - Field Groups - Enlarged "PHP Sync" & "Load" columns
* General: ACF 5.9 Compatibility - Field Groups - Removed the "Field Group Key" value from row actions
* General: ACF 5.9 Compatibility - Field Groups - Changed the text color of "Disabled" state
* General: ACF 5.9 Compatibility - Field Groups - "Description" column is hidden by default
* General: ACF 5.9 Compatibility - Flexible Content - Removed "Clone" field setting
* General: ACF 5.9 Compatibility - Flexible Content - Added "Hide: Duplicate Button" setting
* General: ACF 5.9 Compatibility - Block Type - Added "Inner Block" setting
* General: ACF 5.9 Compatibility - Block Type - Added "Supports: Align Content" setting
* General: ACF 5.9 Compatibility - Block Type - Added "Align Content" setting
* Module: Dynamic Block Type - Fixed Template, Style & Script Render paths during Block Type registration
* Field: Radio - Enhanced Group display for horizontal layout
= 0.8.6.9 =
* Field: Flexible Content - Dynamic Render - External Layout Style & Script files now check for current domain before trying to automatically enqueue `{file}-preview.css` in Preview Mode
* Field: Flexible Content - Dynamic Render - Fixed `$field`, `$layout` & `$is_preview` variables which weren't correctly passed to the Layout Template file
* Field: Flexible Content - Dynamic Render - Fixed Layout Style & Script enqueue handles which weren't using the real Flexible Content field's name
* Field: Radio / Checkbox - Added Group display settings. `## Group` markup can be used in choices settings to create a new group
* Field: Taxonomy Terms - Added "Radio Button" display type
= 0.8.6.8 =
* Field: Flexible Content - Enhanced Code Base
* Field: Flexible Content - Dynamic Render - Enhanced `get_flexible()` & `the_flexible()` functions logic
* Field: Flexible Content - Dynamic Render - Enhanced Template, Style & Script files detection. Now detects paths from WP root directory, and from `/wp-content/` directory
* Field: Flexible Content - Dynamic Preview - Automatically include the layout `{template}-preview.php` file instead of `template.php`, if it is found within the same path
* Field: Flexible Content - Dynamic Preview - Automatically enqueue the layout `{style}-preview.css` file in addition of `style.css`, if it is found within the same path
* Field: Flexible Content - Dynamic Preview - Automatically enqueue the layout `{script}-preview.js` file instead of `script.js`, if it is found within the same path
* Field: Flexible Content - Dynamic Preview - Fixed full path match for Layouts Templates files
* Field: Flexible Content - Added `filter('acfe/flexible/prepend/template/name=my_flexible', $path, $flexible, $layout)` and its variations to alter the field's setting prepend (display only)
* Field: Flexible Content - Added `filter('acfe/flexible/prepend/style/name=my_flexible', $path, $flexible, $layout)` and its variations to alter the field's setting prepend (display only)
* Field: Flexible Content - Added `filter('acfe/flexible/prepend/script/name=my_flexible', $path, $flexible, $layout)` and its variations to alter the field's setting prepend (display only)
* Field: Flexible Content - Deprecated `acfe/flexible/layout/thumbnail/layout=my_layout` hooks and its variations. Use `acfe/flexible/thumbnail/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/layout/render/template/layout=my_layout` hooks and its variations. Use `acfe/flexible/render/template/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/layout/render/before_template/layout=my_layout` hooks and its variations. Use `acfe/flexible/render/before_template/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/layout/render/after_template/layout=my_layout` hooks and its variations. Use `acfe/flexible/render/after_template/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/layout/render/style/layout=my_layout` hooks and its variations. Use `acfe/flexible/render/style/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/layout/render/script/layout=my_layout` hooks and its variations. Use `acfe/flexible/render/script/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/layout/enqueue/layout=my_layout` hooks and its variations. Use `acfe/flexible/enqueue/layout=my_layout` instead
* Field: Flexible Content - Deprecated `acfe/flexible/preview` hooks and its variations
* Module: Dynamic Block Types - The "Template Render" setting is now independant from the theme
* Module: Dynamic Block Types - Added `filter('acfe/block_type/prepend/template/name=my-block-type', $path, $name)` and its variations to alter the field's setting prepend (display only)
* Module: Dynamic Block Types - Added `filter('acfe/block_type/prepend/style/name=my-block-type', $path, $name)` and its variations to alter the field's setting prepend (display only)
* Module: Dynamic Block Types - Added `filter('acfe/block_type/prepend/script/name=my-block-type', $path, $name)` and its variations to alter the field's setting prepend (display only)
* Module: Post Type Archive Page - `have_archive()` now allows to pass the post type name. Usage example: `while(have_archive('my-post-type')): the_archive()`
* Module: Multilang - Enhanced Options Pages Post ID detection
* Module: Multilang - Added "Post Type List" & "Taxonomy List" Locations compatibility
* Module: Multilang - Fixed the "Disable module" setting which wasn't working correctly
* Module: Multilang - Fixed Polylang Ajax language detection
* General: Enhanced `acfe_update_setting()`, `acfe_get_setting()` functions and `filer('acfe/settings/{name}')` hook
* General: Removed `ACFE_THEME_PATH` & `ACFE_THEME_URL` constants
* General: Added `acfe/theme_path`, `acfe/theme_url` & `acfe/theme_folder` settings
* General: The default `acfe/php_save`, `acfe/php_load` & `acfe/theme_folder` settings are now generated based on the new `acfe/theme_path` & `acfe/theme_url` settings
* General: The `acfe/theme_folder` setting is now used to preprend Flexible Content & Block Types render fields settings (Display only)
= 0.8.6.6 =
* Module: Multilang - Fixed WPML front-end language detection for custom languages
* Module: Settings - Added "Multilang" & "Single Meta" settings in the UI
* Module: Settings - Fixed `l10n_textdomain` which wasn't correctly displayed
* Module: Dev Mode - Fixed option "Edit" action link
* Module: PHP AutoSync - Added l10n support
* Module: Single Meta - Enhanced "Delete Orphan Meta" setting logic & performance
* Field: Taxonomy Terms - Added "Term (All childs)" to display any childs level terms
* Field: Taxonomy Terms - Renamed "Term (Childs)" to "Term (Direct childs)" to avoid confusion with the new filter
* Field: Taxonomy Terms - Fixed "Term (Direct childs)" which could be duplicated in some cases
= 0.8.6.5 =
* General: Added WPML & Polylang compatibility for Options Pages with custom post ids. ie: `my-theme` post id will be translated to `my-theme_en` with WPML & `my-theme_en_US` with Polylang
* Modules: Dynamic Post Types, Taxonomies, Options Pages & Block Types - Added Multilingual compatibility for WPML & Polylang. Items are automatically registered as strings for both WPML & Polylang plugins
* Modules: Dynamic Post Types, Taxonomies, Options Pages & Block Types - Added l10n support for the ACF Exporting Tools
* Module: Dynamic Post Type Archive - Added "Edit Archive Page" in the Admin Bar in the front-end when visiting an Archive Page
* Module: Dynamic Post Type Archive - Added l10n on the Label
* Module: Dynamic Post Type - Fixed Typo in UI
* Module: Single Meta Save - Enhanced code logic & compatibility
* Module: Single Meta Save - Added `get_fields()` support
* Module: Single Meta Save - Removed the "Delete Orphan Meta" feature from Options Pages
* Module: Dev Mode - Fixed Bulk Actions being displayed when the Postboxes were hidden by user
* Module: Dev Mode - Added Clone in Sub Fields support (previously displayed as `Undefined`)
* Module: Dev Mode - Fixed PHP 7.4 notices
* Module: Dynamic Forms - Query Var setting has been removed
* Module: Dynamic Forms - Query vars are now always generated. If no action name has been set, the query var will be named `{form_name}-{action}`. ie: `my-form-post`. The next post action will be named `my-form-post-2`
* Module: Dynamic Forms - Added "Label Placement: Hidden" setting
* Module: Dynamic Forms - Added `{current:post:post_author_data}` template tags in the "Cheatsheet" tab
* Module: Dynamic Forms - Added all available `{query_var}` template tags in the "Cheatsheet" tab
* Module: Dynamic Forms - Form Fields Groups, E-mail Action From/To/Subject fields are not required anymore
* Module: Dynamic Forms - Added JS Form Submit Action code example in the "Submission" tab
* Module: Dynamic Forms - Tweaked UI
* Field: Flexible Content - Added "Layout Toggle" setting allowing the user to hide specific layout from the front-end
* Field: Flexible Content - Fixed "Layout State" setting which incorrectly forced it as "Closed" when using the "Dynamic Render" setting
* Field: Flexible Content - Fixed "Layout Title" CSS
* Field: WYSIWYG - Fixed the Smart Delayed Init in the Flexible Content when the layout had the "Layout State" on "Opened"
* Fields: Advanced Validation - Added `count()`, `is_array()`, `is_string()`, `is_numeric()`, `get_post_type()`, `get_post_by_id()`, `get_post_by_title()` rules and `Matches regex`, `Doesn't matches regex`, `!= true`, `!= false`, `!= null` operators
* Field: Date Picker - Added `==`, `!=`, `>`, `<`, `Pattern match` & `Contains` conditional logic
* Field: Image - "Use as Featured Image" setting now loads the Featured Image if it was already set
* Field: Taxonomy Terms - Added Async Load setting support
* Field: Taxonomy Terms - Fixed "Level" filter input CSS width
* Field: Post Object - Merged "Allow Custom" & "Save Custom Value as New Post" settings
* Field: Post Object - Fixed the "Save as New Post" setting when allowing "Multiple Values"
* Field: Post Object - Added instructions & code examples to alter the New Post arguments programmatically
* Field: Code Editor - Added border radius to match WP admin input style
* Field: Group - Fixed "Edit in Modal" settings which weren't displayed
* Field Groups: Location Column - Fixed potential consuming query when using the `Post == ID` Conditional Rule
* General: Introduced `acfe_update_setting()`, `acfe_get_setting()` functions and `acfe/settings/{name}` filter
* General: Compatibility - Fixed WPML PHP notices in Field Groups
* General: Compatibility - Fixed Advanced Forms PHP notice during ACF Extended: Forms submission
* General: Readme - Added Field Bi-directional instructions to migrate already existing data
* General: Readme - Added Multilangual section
* General: Readme - Added Donators section
= 0.8.6.3 =
* Module - Enhanced UI - Added WP User & WP Settings UI enhancements
* Module - Enhanced UI - Taxonomies UI enhancements were moved in the to general Enhancement module. The setting `acf_update_setting('acfe/modules/taxonomies')` has been replaced by `acf_update_setting('acfe/modules/ui')`
* Module: Dev Mode - Added "Field Type" column on ACF meta overview
* Module: Dev Mode - Added "Autoload" column on Options meta overview
* Module: Dev Mode - Added "Delete" action for each meta & options fields
* Module: Dev Mode - Added "Bulk Delete" action
* Module: Single Meta Save - Reworked codebase
* Module: Single Meta Save - Added Options pages compatibility (disabled by default. See `filter('acfe/modules/single_meta/options')` usage in the readme to enable specific Options ID)
* Module: Single Meta Save - Added `filter('acfe/modules/single_meta/post_types')` to allow specific post types only (default to: all)
* Module: Single Meta Save - Added `filter('acfe/modules/single_meta/taxonomies')` to allow specific taxonomies only (default to: all)
* Module: Single Meta Save - Fixed bidirectional setting which wasn't working when Single Meta Save was enabled
* Fields settings: Bidirectional - Added Self-bidirectional setting, allowing to link a field on itself
* Fields settings: Bidirectional - Added Multi-bidirectional setting, allowing to link multiple fields
* Field: Taxonomy Terms - Fixed a bug with last childs choices not being correctly rendered
* Field: Code Editor - Fixed duplicated field from the Field Group UI when user cloned the field
= 0.8.6.1 =
* Module: Dynamic Post Types/Taxonomies/Block Types/Options Pages - Slugs can now to edited & updated from the UI
* Module: Dynamic Options Pages - Added a configuration icon on top of options page to easily switch to options page settings
* Module: Dynamic Forms - User Action query var now returns the password if it has been created/generated during the action. This will allow developers to send the password confirmation via an e-mail action using query vars