WordPress shortcodes are a powerful way to add dynamic content to posts, pages, and widgets. However, if you’ve ever tried to use wp_redirect
inside a shortcode. You might be see the the warning that

Why wp_redirect() Doesn’t Work in Shortcodes ?
wp_redirect()
is a function designed to send a raw HTTP header that redirects a user to a specified URL. wp_redirect()
is a function designed to send a raw HTTP header that redirects a user to a specified URL. This warning show for that this http request already send we try to modify after send that why this give this warning.
When you use wp_redirect()
in a shortcode
, WordPress has already output a significant amount of content (including headers).
What can you do :
Solution 1 : JavaScript Redirects:
If you want to redirect based on your condition with in shortcode
you can use javascript instand of wp_redirect()
. Here is the sample code.
echo '<script>window.location.href="https://example.com";</script>';
Solution 2 : Use Template Redirection Logic
If your redirection logic should happen before page content renders, That you can use template_redirect action hook to use wp_redirect()
.
add_action('template_redirect', 'my_custom_redirect_logic');
function my_custom_redirect_logic() {
if (is_page('my-page-slug')) {
wp_redirect('https://example.com');
exit;
}
}
Final Thoughts
Finally if you can’t use wp_redirect()
in your shortcode if you use it that you can’t save your in your page after embed this short code, you will see a warning message. So please use wp_redirect()
carefully.
Nice post.