How to check if a shortcode exists?

I’m using do_shortcode function to add shortcode in my template. But i would like to check if that shortcode exists before display them.

I mean like this

Read More
If (shortcode_gallery_exists) {
  echo do_shortcode('');
}

Can anyone help me? Thanks

Related posts

Leave a Reply

7 comments

  1. I think you could use the following code to do this:

    $content = get_the_content();
    //write the begining of the shortcode
    $shortcode = '[gallery';
    
    $check = strpos($content,$shortcode);
    if($check=== false) {
      //Code to execute if there isn't the shortcode
    } else {
      //Code to execute if the shortcode is present
    }
    

    (Caveat: not tested)

  2. Found this online somewhere and used is once or twice

    //first we check for shortcode in the content
    $tempContent = get_the_content();
    $tempCheck = '[gallery';
    
    $tempVerify = strpos($tempContent,$tempCheck);
    if($tempVerify === false) {
      //Your Shortcode not found do nothing ? you choose
    } else {
        echo do_shortcode('[gallery]');
    }
    

    .

    (i know the [gallery is missing the ].. leave it like so)

    This should be used inside the loop
    ..
    Hope this helps, Sagive

  3. You can create your own function,

    // check the current post for the existence of a short code
    function has_shortcode( $shortcode = NULL ) {
    
        $post_to_check = get_post( get_the_ID() );
    
        // false because we have to search through the post content first
        $found = false;
    
        // if no short code was provided, return false
        if ( ! $shortcode ) {
            return $found;
        }
        // check the post content for the short code
        if ( stripos( $post_to_check->post_content, '[' . $shortcode) !== FALSE ) {
            // we have found the short code
            $found = TRUE;
        }
    
        // return our final results
        return $found;
    }
    

    The in your template write a conditional like,

    if(has_shortcode('[gallery]')) {  
        // perform actions here  
    } 
    

    Idea from this NetTuts link

  4. WordPress allows you to check whether a shortcode exists or not.

    To check it you can use shortcode_exists() function. It returns true if the shortcode exists.

    <?php if ( shortcode_exists( $tag ) ) { } ?>
    

    Where $tag is the name of shortcode you want to check.

    <?php
    if ( shortcode_exists( 'latest_post' ) ) {
        // The short code exists.
    }
    ?>
    
  5. I know it’s old question but someone may still need this, especially because shortcode_exists() may not work for some plugin shortcodes:

    $shortcode_result = do_shortcode('[your_shortcode]');
    
    if ($shortcode_result != [your_shortcode]) && 
        !empty($shortcode_result))] {
    
        // do what you need
    
    } else {
        // this is not valide shortcode
    }