Codeinwp / Codeinwp/woocommerce-product-addon

Paired-option editor labels option identifiers as Image ID

Open
#736 0 comments 0 reactions 1 assignee View on GitHub

@selul is already working on this.

Since Sep 9, 2026.

bug-report bug-report-triage
Dominant language
PHP
Stars
15
Forks
9
Avg merge
3d 17h
Merged PRs (30d)
16

Description

Summary

In the React field editor, select, radio, and checkbox option rows present their identifier control as Image ID. The control is expected to describe the value it stores, but it stores a unique option identifier rather than an image attachment association. Entering an attachment ID therefore does not produce image behavior, which can lead merchants to configure unusable options.

Customer context

Product / area: PPOM for WooCommerce, React field editor
Version: 34.0.9
Environment: WordPress and WooCommerce versions not provided; the React editor is an opt-in beta path
Integration / third party: Not provided
Reported error / symptom: image id not works
Impact: The plugin was deactivated after two days because the merchant could not get the field configuration to work.

Reproduction notes

Reported workflow details are sparse. Source-backed reproduction path: enable the React field modal in PPOM 34.0.9, edit a select, radio, or checkbox field, enter a WordPress attachment ID in the option-row control labeled Image ID, save the field group, and inspect the storefront. A runtime reproduction was not performed; the source shows that the entered value is stored as the option id, not as image metadata.

Diagnosis

Conclusion

The v34.0.9 React paired-options editor presents the id property as Image ID for select, radio, and checkbox variants. Repository evidence establishes that this property is the option identifier: the classic editor calls the equivalent control Unique Option ID, while only the switcher variant has a separate image property. This directly explains why an attachment ID entered into the reported control does not create image behavior.

Where this likely occurs
  • React field modal: packages/admin/field-modal/src/components/paired-options/PairedOptionRowItem.tsxPairedOptionRowItem() lines 212–225 labels the control Image ID for non-switcher variants but reads and writes row.id.
  • React field modal: packages/admin/field-modal/src/components/paired-options/SwitcherOptionFields.tsxSwitcherOptionFields() lines 12–27 separately binds the actual switcher image control to row.image.
  • React field modal: packages/admin/field-modal/src/utils/pairedOptionsData.tsemptyPairedOptionRow() lines 28–45 initializes id for every option and adds image only for switchers.
  • Classic editor comparison: classes/fields.class.php — paired-options rendering lines 637–666 presents the same id value as Unique Option ID.
  • The behavior is present in tag v34.0.9 (9b1e339) and traces to the React field-modal work in commit 34742e0. No earlier working release boundary was identified.
Engineering notes

The affected React modal is disabled by default and is enabled through its constant, query flag, or filter. The classic editor does not have the misleading label. The inspected contract distinguishes an option identifier from the switcher image value; no storefront image-rendering contract exists for ordinary select, radio, or checkbox paired options in this path.

Test coverage status

No relevant unit, integration, or end-to-end coverage for the paired-option identifier label or value contract was found during inspection. The field-modal test search did not find a focused paired-options test.

What to verify or explore next
  • May be worth reproducing in v34.0.9 with the React modal enabled for select, radio, and checkbox fields.
  • May be worth confirming the saved payload and storefront result after entering a media attachment ID in the displayed Image ID control.
  • The switcher variant and classic editor can provide compatibility comparisons for the same release.
Unknowns / follow-up

The feedback does not state which field type was edited or how the beta React modal was enabled. No runtime reproduction accompanied the uninstall submission.

Confidence

Confidence: 92/100

The v34.0.9 source contains an exact, internally inconsistent Image ID label in the beta React paired-options editor, while the reported cross-field combination could not be substantiated from the available code or tests.


Source: automated uninstall feedback — woocommerce-product-addon, 2026-09-08
Generated by bug-report-triage (ID: bug-report-triage_6aa0e8460b7bb7.71183925)

Contributor guide

Open the contributing guide

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.