In Oxygen‘s Facebook group a user asked:

Q2) The Author CPT has custom fields for social URLs. I would like to use the ACF as the link on the respective social Icons… ONLY if the field has data. Can I wrap a peice of oxy content in php that checks if the field has data before displaying?

We can create a custom shortcode that returns the enclosed content only if the supplied custom field has a value – to be used with a Shortcode Wrapper component.

Step 1

Install and activate Code Snippets plugin.

Go to Snippets > Add New.

Title: Shortcode to output a custom field only if it has a value

Code:

add_shortcode( 'show_if_has_value', 'func_show_if_has_value' );
/**
 * Add a custom shortcode to display enclosed content only if the supplied advanced custom field has a value.
 *
 * Sample usage: [show_if_has_value fieldname="whatever"]content[/show_if_has_value]
 *
 * @param array $atts An associative array of attributes, or an empty string if no attributes are given.
 * @param string $content The enclosed content.
 * @return void|string Enclosed content if custom field is populated and nothing if otherwise.
 */
function func_show_if_has_value( $atts, $content = '' ) {

	if ( class_exists( 'acf' ) && get_field( $atts['fieldname'] ) ) { // if the custom field has some value
		return $content; // show the enclosed content.
	} else { // otherwise
		return ''; // nothing.
	}

}

Step 2

In the Oxygen editor add a Shortcode Wrapper component.

Full shortcode:

[show_if_has_value fieldname="twitter_url"][/show_if_has_value]

Replace twitter_url with the name of your custom field.

Place other components inside this Shortcode Wrapper and these will be output only if the specified field is populated.

Ex.:

Watch the video at the beginning of this article for a detailed walkthrough.

That’s it!

Need help implementing a tutorial in your site or want to hire me for custom work?

HIRE ME

Find the article helpful and wish to donate?

DONATE

Comments

For adding code blocks wrap the code in three backticks. Markdown should work.
Provide a URL of your site/webpage if something is not working.
magnifiercross
>
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram
%d bloggers like this: