The pre_do_shortcode_tag filter allows you to modify or replace a shortcode’s output before it is executed, effectively short-circuiting the shortcode generation process.
Usage
add_filter('pre_do_shortcode_tag', 'your_custom_function', 10, 4); function your_custom_function($output, $tag, $attr, $m) { // your custom code here return $output; }
Parameters
- $output (false|string): The short-circuit return value, either false or the value to replace the shortcode with.
- $tag (string): The shortcode name.
- $attr (array|string): The shortcode attributes as an array or an empty string.
- $m (array): The regular expression match array.
More information
See WordPress Developer Resources: pre_do_shortcode_tag
Examples
Modify [gallery] shortcode output
To modify the output of the [gallery] shortcode, you can use the following code:
add_filter('pre_do_shortcode_tag', 'modify_gallery_shortcode', 10, 4); function modify_gallery_shortcode($output, $tag, $attr, $m) { if ('gallery' !== $tag) { return $output; } // Modify gallery output as needed $new_output = "Modified gallery output"; return $new_output; }
Replace [video] shortcode with a custom video player
If you want to replace the [video] shortcode with a custom video player, use this code:
add_filter('pre_do_shortcode_tag', 'replace_video_shortcode', 10, 4); function replace_video_shortcode($output, $tag, $attr, $m) { if ('video' !== $tag) { return $output; } // Generate custom video player output $custom_video_output = "Custom video player output"; return $custom_video_output; }
Prevent [audio] shortcode from rendering
To prevent the [audio] shortcode from rendering its output, use the following code:
add_filter('pre_do_shortcode_tag', 'prevent_audio_shortcode', 10, 4); function prevent_audio_shortcode($output, $tag, $attr, $m) { if ('audio' === $tag) { return ''; // Return an empty string to prevent the shortcode output } return $output; }
Add a custom attribute to [caption] shortcode
Add a custom attribute to the [caption] shortcode with this code:
add_filter('pre_do_shortcode_tag', 'add_custom_attr_to_caption', 10, 4); function add_custom_attr_to_caption($output, $tag, $attr, $m) { if ('caption' !== $tag) { return $output; } // Add custom attribute to the caption shortcode $attr['custom_attr'] = 'custom_value'; // Rebuild the caption output with the new attribute $new_output = "Caption output with custom attribute"; return $new_output; }
Display a message for users without access to [private] shortcode content
Display a custom message for users who don’t have access to the [private] shortcode content:
add_filter('pre_do_shortcode_tag', 'private_shortcode_for_logged_in_users', 10, 4); function private_shortcode_for_logged_in_users($output, $tag, $attr, $m) { if ('private' !== $tag) { return $output; } if (is_user_logged_in()) { return $output; // Allow logged-in users to see the shortcode output } // Custom message for users without access $custom_message = "You must be logged in to view this content."; return $custom_message; }