AdvancedCustomFields / AdvancedCustomFields/acf

WYSIWYG inside seamless clone field does not save on Options Pages

Open
#1,005 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
PHP
Stars
945
Forks
197
PR merge metrics
No merged PRs in 30d

Description

Environment

  • ACF Pro: 6.7.1
  • WordPress: 6.9.4
  • PHP: 8.3

Description

A wysiwyg field inside a clone field (display: seamless, prefix_field: 0) does not
persist its value when the clone is placed on an ACF Options Page.

Steps to reproduce

  1. Create a shared field group with a wysiwyg field (e.g. group_shared_title, field key field_shared_title, name title)
  2. Create an Options Page field group that clones it: "type": "clone", "clone": ["group_shared_title"], "display": "seamless", "prefix_field": 0
  3. Enter text in the wysiwyg and save

Expected behavior

options_title in wp_options contains the saved value.

Actual behavior

options_title is empty. The reference row _options_title is written with the clone
field's key
(field_global_cta_newsletter_title) instead of the inner wysiwyg field's
key (field_shared_title), so ACF cannot correctly resolve and persist the value.

POST payload (confirmed via DevTools)

The value IS sent correctly in the request:
acf[field_global_cta_newsletter_title][field_global_cta_newsletter_title_field_shared_title] = "

...

"

But after save, options_title remains empty.

Workaround

Manually intercept acf/save_post and write the value directly to wp_options:

add_action('acf/save_post', function ($post_id) {
if ($post_id !== 'options') return;
$acf = $_POST['acf'] ?? [];
$clone_key = 'field_global_cta_newsletter_title';
$inner_key = $clone_key . '_field_shared_title';
if (isset($acf[$clone_key][$inner_key])) {
update_option('options_title', wp_kses_post($acf[$clone_key][$inner_key]));
}
}, 20);

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how a seamless clone containing a WYSIWYG field is saved from the confirmed POST payload through the ACF Options Page save path. Compare the clone field key used for the _options_title reference with the inner field key, then reproduce the save and verify that options_title in wp_options contains the submitted value without the workaround.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend, database
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.