I recently had a need to have an Options page fallback for the Advanced Custom Fields plugin.
I have a field called, “state_name” that loads on both the Options page and single pages. The idea is that the options page will say “United States”, while each page has the option to override that with “Missouri”, “Illinois”, etc. If a page does not have a state entered in the “state_name” field, then it displays, “United States” from the Options page.
It is easy to code conditional fallbacks for specific fields within the theme, but shortcodes used within wysiwyg custom fields will not fall back to the Options page and have a chance of rendering empty.
For example, if I have a custom field called, “description”, and I use the shortcode, it will return the state name ONLY IF the “state_name” field is filled in on that specific page. There is no fallback to the Options page.
To get the shortcodes to fall back properly as well, add the following to functions.php in your theme:
// via http://www.advancedcustomfields.com/resources/filters/acfload_value/
function my_acf_load_value( $value, $post_id, $field )
{
// run the_content filter on all textarea values
if ($value) {
//$value = apply_filters('state_name',$value);
} else {
$value = get_field('state_name','options');
}
return $value;
}
// acf/load_value/name={$field_name} - filter for a specific value load based on it's field name
add_filter('acf/load_value/name=state_name', 'my_acf_load_value', 10, 3);
It is a bit complex to explain, but if you ever have the problem, hopefully this post will help you!
[NOTE: Many thanks to Elliot for helping me solve this one!]
More posts from themightymo.com
How to Connect a GoDaddy Site to ManageWP
GoDaddy owns ManageWP, and, strangely, they make it very difficult to add GoDaddy-managed WordPress sites to their ManageWP service. Thankfully, there’s a quick workaround: Visit https://yoursite.com/wp-admin/plugins.php?showWorker=1 — This will make the ManageWP “Worker” plugin visible. Copy the connection info from the ManageWP Worker plugin. Add the site per-normal on ManageWP. That’s it! I hope this…
How to check if your current page is the wp-login.php page
I realized this morning that my TMM Maintenance Mode WordPress plugin had a bug that was causing the wp-login.php page to be inaccessible. The solution was to write a simple function that checks whether or not we’re currently on a login page, and then add a call to that function in my code. Here’s the…
WooCommerce Product Image Gallery Not Loading with WP Rocket Active
Today I updated a WooCommerce site, and everything worked fine, except for the images on product pages – they were not displaying at all. After a lot of trial & error, I realized that WP Rocket was to blame. I’m not sure exactly what the issue was (though my hunch is that it had to…