WP-Mix

A fresh mix of code snippets and tutorials

WordPress Conditional Shortcodes via Ajax

This example builds from the conditional do_shortcode technique to evaluate shortcodes during Ajax requests.

The following example illustrates use of get_shortcode_regex() to check if Ajax-loaded content includes the target shortcode, [ses_pro]. If it exists, we parse the shortcode attributes for later use in our script.

if (defined('DOING_AJAX') && DOING_AJAX) {
	if (isset($_REQUEST['input'])) parse_str($_REQUEST['input'], $input);
	if (isset($input['ses-postid']) && is_numeric($input['ses-postid'])) $post_ID = sanitize_text_field($input['ses-postid']);
	$the_post = get_post($post_ID);
	$content = $the_post->post_content;
	$pattern = get_shortcode_regex();
	preg_match('/'. $pattern .'/s', $content, $matches);
	if (is_array($matches) && isset($matches[0])) $atts = shortcode_parse_atts(str_replace('[ses_pro', '', str_replace(']', '', $matches[0])));
}

Here we check if WordPress is DOING_AJAX before using shortcode_parse_atts() to get an array of all shortcode attributes and their associated values. This is another snippet from my plugin, SES Pro (Simple Email Signups).

References

Learn more

WordPress Themes In DepthWizard’s Collection: SQL Recipes for WordPress