Home › Forums › Backend Issues (wp-admin) › Many custom fields in a post : optimize performance › Reply To: Many custom fields in a post : optimize performance
Hi John,
Just to follow up on this subject, I tested a solution to the issue you raised in your november 2nd post.
The issue: hiding fields by conditional logic in a repeater is not a good idea because when reordering rows, hidden fields will not be reordered and everything will be mixed up
My solution: It is pretty hacky, but it seems to work fine.
1. I hid the reorder column of my repeater via CSS
2. I created a .reordermode class that, when applied to the repeater :
– Makes the reorder column available again
– Hides most fields of the repeater with display:none
3. I created a true/false field that, when changed to TRUE:
– removes via JS all the .acf-hidden, .acf-empty classes, hidden attribute from all divs of the repeater, as well as the disabled attribute from all inputs.
– adds the class .reordermode to the repeater via JS
=> I can reorder the repeater knowing that all values will be saved.
4. Also, when clicking on TRUE, a class is added to the true/false so as it is not possible to click back to FALSE before saving, (it also adds a message to remind users to save)
5. When saving the post the class is not saved so the button is available and i can click back to FALSE.*
Also, the “.acf-hidden, .acf-empty, hidden, disabled” classes and attributes are only removed on Change, not on load, so when I save the post they are all back on.
$("#acf-field_61a74bcfc88d5").on('change', function() {
if ($(this).is(':checked')) {
$("#myrepeater").addClass("reordermode");
$("#myrepeater div").removeClass("acf-hidden");
$("#myrepeater div").removeClass("acf-empty");
$("#myrepeater div").removeAttr("hidden");
$("#myrepeater input").removeAttr("disabled");
$("#myrepeater select").removeAttr("disabled");
$("#myrepeater textarea").removeAttr("disabled");
}
else {
$("#myrepeater").removeClass("reordermode");
}
});
* It would be even better if the true/false value was turned back to false automatically after saving, but i don’t know how to do that
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!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.