TL/DR: The media selector when used on the front end is not fully respecting the “library: uploaded to post” setting, and the image selected is not being saved from a front-end submission if a cloned field is being used.
I have a field group which includes a cloned field to select a featured image. The field is set to only select from images uploaded to the post, and to save the uploaded image id as _thumbnail_id (ie set it as the post featured image). The field group is being used both in the wp-admin area for editing the CPT, and also as a front-end submission form for creating new CPT posts.
Within the admin area, the field works exactly as expected – clicking the “add image” button on a new post brings up the WP uploader, with no images to select; I have to upload the image I want to use.
On the front end though, the WP media uploader seems to ignore the “uploaded to post” setting, and shows images available on the server – but doesn’t use ajax loading to fetch more images on scrolling. If I select an already uploaded image and save the form it appears to attach the image to the new post, but doesn’t save the image ID in the _thumbnail_id meta. This is apparent as going to edit the new post in the wp-admin area (a) doesn’t show an image as selected for the featured image; and (b) if I click the “add image” button, it shows the previously selected image as one that can now be selected.
A few things that may be affecting this:
1) the submission form is being created through the WooCommerce memberships my_account area
2) I have used an init action hook to add the acf_form_head() function, rather than adding it in to the template files
Settings for the Feature Image field:
Field Label: Feature Image Field Name: _thumbnail_id Field Type: Image Required: No Return Value: Image ID Library: Uploaded to post
all other settings at their default
Settings for CPT form field group:
Field label: Feature Image Field Name: _thumbnail_id Field Type: Clone Required: Yes Fields: All fields from Feature Image field group Display: Seamless (replaces this field with selected fields) Prefix Field Labels: No Prefix Field Names: No
code used in the template file for the front end submission:
acf_form([ 'post_id' => 'new_post', 'new_post' => [ 'post_type' => 'goc_article', 'post_status' => 'pending' ], 'post_title' => true, 'field_groups' => ['group_5ae10dbfd6ade','group_5ae201392e590'], 'submit_value' => 'Submit news article' ]);
After submitting from the front end, all meta fields are correctly set *except* for _thumbnail_id which is empty, with *no extra* meta fields appearing in the database (ie it isn’t being saved as something else)
I have tried:
1) changing the featured image from a clone to a standard image field: the image ID is saved as the _thumbnail_id meta, but the media library still shows images not uploaded to post
2) changing Library from “Uploaded to post” to “All”: works as would be expected.
I don’t want users to be able to select any existing images when submitting a new item, so the Uploaded to post setting is important – especially as I have the same issue with a gallery selector as part of a flexible content field, I don’t want to have to revert to lots of file uploads!
Being able to use a clone field is desirable, but not essential. It would certainly make it easier to keep Feature Image standards consistent accross all field groups where they are used!
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
© 2023 Advanced Custom Fields.