The has_shortcode() WordPress PHP function determines whether the passed content contains the specified shortcode.
Usage
has_shortcode( $content, $tag )
Example:
Input: has_shortcode( 'This is a sample text with [my_shortcode].', 'my_shortcode' )
Output: true
Parameters
$content
(string) – Required. Content to search for shortcodes.$tag
(string) – Required. Shortcode tag to check.
More information
See WordPress Developer Resources: has_shortcode()
Examples
Enqueue a script if the shortcode is being used
This code enqueues the ‘wpdocs-script’ if the ‘wpdocs-shortcode’ is present in the post content.
function wpdocs_shortcode_scripts() { global $post; if ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'wpdocs-shortcode') ) { wp_enqueue_script( 'wpdocs-script'); } } add_action( 'wp_enqueue_scripts', 'wpdocs_shortcode_scripts');
Redirect to a specific page for non-logged-in users for a specific shortcode
This code redirects non-logged-in users to a login page when the ‘only_loggedin_users’ shortcode is present in the post content.
function wpdocs_wordpress_doc_head() { global $post; if ( has_shortcode( $post->post_content, 'only_loggedin_users' ) ) { if ( ! is_user_logged_in() ) { $page = get_page_by_title('login'); wp_redirect( get_permalink( $page->ID ) ); exit; } } } add_action( 'template_redirect', 'wpdocs_wordpress_doc_head', 5 );
Check if the content has a specific shortcode
This code checks if the content has a ‘gallery’ shortcode.
$content = 'This is some text, (perhaps pulled via $post->post_content). It has a [gallery] shortcode.'; if ( has_shortcode( $content, 'gallery' ) ) { // The content has a [gallery] shortcode, so this check returned true. }
Check for multiple shortcodes in a content
This code checks if the content has either ‘shortcode1’ or ‘shortcode2’ and performs some action accordingly.
$content = 'This is some text with [shortcode1] and [shortcode2].'; if ( has_shortcode( $content, 'shortcode1' ) ) { // The content has a [shortcode1], so do something. } if ( has_shortcode( $content, 'shortcode2' ) ) { // The content has a [shortcode2], so do something else. }
Display a message if a shortcode is present
This code displays a message if the ‘my_shortcode’ is present in the content.
$content = 'This is some text with [my_shortcode].'; if ( has_shortcode( $content, 'my_shortcode' ) ) { echo "The content has a [my_shortcode]."; }