Using WordPress ‘get_shortcode_atts_regex()’ PHP function

The get_shortcode_atts_regex WordPress PHP function retrieves the shortcode attributes regex.

Usage

$pattern = get_shortcode_atts_regex();

Parameters

  • None

More information

See WordPress Developer Resources: get_shortcode_atts_regex

Examples

Match Shortcode Attributes

Retrieve the regex pattern for matching shortcode attributes and use it to match them in a string.

// The shortcode string
$shortcode_str = '[custom_shortcode attribute1="value1" attribute2="value2"]';

// Get the regex pattern for shortcode attributes
$pattern = get_shortcode_atts_regex();

// Match the shortcode attributes
preg_match_all("/$pattern/", $shortcode_str, $matches);

// Print the matched attributes
print_r($matches);

Parse Attributes from a Shortcode

Parse attributes from a shortcode string and store them in an associative array.

// The shortcode string
$shortcode_str = '[custom_shortcode attribute1="value1" attribute2="value2"]';

// Get the regex pattern for shortcode attributes
$pattern = get_shortcode_atts_regex();

// Match the shortcode attributes
preg_match_all("/$pattern/", $shortcode_str, $matches);

// Parse the attributes
$attributes = array();
foreach ($matches[0] as $match) {
    list($attribute, $value) = explode('=', $match);
    $attributes[$attribute] = trim($value, '"');
}

// Print the attributes array
print_r($attributes);

Modify Shortcode Attributes

Retrieve shortcode attributes, modify them, and rebuild the shortcode string.

// The shortcode string
$shortcode_str = '[custom_shortcode attribute1="value1" attribute2="value2"]';

// Get the regex pattern for shortcode attributes
$pattern = get_shortcode_atts_regex();

// Match the shortcode attributes
preg_match_all("/$pattern/", $shortcode_str, $matches);

// Modify the attributes
$new_attributes = array();
foreach ($matches[0] as $match) {
    list($attribute, $value) = explode('=', $match);
    $new_value = $attribute === 'attribute1' ? '"modified_value"' : $value;
    $new_attributes[] = "{$attribute}={$new_value}";
}

// Rebuild the shortcode string
$new_shortcode_str = '[custom_shortcode ' . implode(' ', $new_attributes) . ']';

// Print the new shortcode string
echo $new_shortcode_str;

Remove Specific Attribute

Remove a specific attribute from a shortcode string.

// The shortcode string
$shortcode_str = '[custom_shortcode attribute1="value1" attribute2="value2"]';

// Get the regex pattern for shortcode attributes
$pattern = get_shortcode_atts_regex();

// Match the shortcode attributes
preg_match_all("/$pattern/", $shortcode_str, $matches);

// Remove the attribute2
$new_attributes = array();
foreach ($matches[0] as $match) {
    list($attribute, $value) = explode('=', $match);
    if ($attribute !== 'attribute2') {
        $new_attributes[] = "{$attribute}={$value}";
    }
}

// Rebuild the shortcode string
$new_shortcode_str = '[custom_shortcode ' . implode(' ', $new_attributes) . ']';

// Print the new shortcode string
echo $new_shortcode_str;