The problem: All of the wp_get_attachment functions require 2 database calls per image (from what I can tell by testing it out), so that means any image referenced by an ACF field += 2 queries. This can be a lot if you have a fairly large repeater (or a gallery).
Since we know what image we could save the URL (and any other associated data) in a post_meta field instead of only saving the attachment ID.
I know this is possible by using a text field instead of an image field, but then the image selector is lost, and it’s harder for the WP admins/editors to input images.
Solution: What I think would be great is a new field that lets you use the image selector to saves the URLs (full and all pre-sized ) and meta in the post_meta table, perhaps serialized into a single field.
Has anyone attempted to build a field that does something like this? Is it a foolish idea?
Pro/Con
Pros:
Cons:
- Less adaptable to any changes to the attachment
- Not backwards compatible – requires a new field
Hi @wilirius
I think you can create a text field that will hold the serialized image data. After that, you can use the acf/save_post hook to update the serialized image text field when you updating the post. You can update the field using the update_field() function.
I hope this helps.
Ahh yes that’s a great idea! I think I saw something like that before for saving the GPS lat/lng from the map field.
Just to verify:
- Hook in to the acf/save_post
- Check for an update to the image selector field
- Update a separate text field with the URL for the image from the image field
Hi @wilirius
I think that’s perfect. Don’t forget that you can use serialize() and unserialize() functions.
I hope this helps 🙂
Definitely helps, good solutions & info, thanks a bunch.