Skip to content

Moving from ACF ​

WP Freeform Fields reads values where ACF saved them and keeps field keys, so a site can move over without converting data.

Steps ​

  1. Back up the site.
  2. Install and activate WP Freeform Fields next to ACF. While ACF is active, WP Freeform Fields stays out of its way: ACF's fields, acf-json files, blocks and function names remain ACF's.
  3. Open Custom Fields → Tools → Migrate from ACF. Read the theme check first: it lists any ACF functions or acf/… hooks your theme uses that WP Freeform Fields does not provide. Then import.
  4. Deactivate ACF. Themes that use get_field() keep working: values are read where ACF saved them, and acf/… filters in the theme (for example acf/load_field that fills choices) keep running.

With WP-CLI, step 3 is:

bash
wp wpff import-acf --dry-run
wp wpff import-acf

The import moves post types, taxonomies, options pages and field groups from the database, in that order.

If ACF is deactivated first ​

The site keeps working: field groups and options pages are read from ACF's tables (read-only, marked ACF in the list) until you migrate them.

ACF JSON files in acf-json are read too. Groups exported from ACF as PHP work as they are.

ACF to REST API ​

The REST output of the ACF to REST API plugin (acf/v3/… routes and the acf property) is served too while that plugin is active and ACF is not, with stricter access:

  • only the fields of each object's groups;
  • core REST visibility rules;
  • options page fields only for users who may open the page, unless the group is shown in REST.

Before switching a production site

Read Known differences and ACF compatibility.

GPL-2.0-or-later. Not affiliated with ACF or WP Engine.