WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

If (shortcode_gallery_exists) {
  echo do_shortcode('[gallery]');

Can anyone help me? Thanks

share|improve this question
up vote 4 down vote accepted

#23572 introduced shortcode_exists() into 3.6.

share|improve this answer

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)

share|improve this answer

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

share|improve this answer
3.6 is introducing has_shortcode() – Ian Dunn Jul 19 '13 at 20:23

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

share|improve this answer
OMG @Ryan beat me to it.. :) we posted a few seconds apart i guess cuz i didnt see hes answer :) apologies ryan - you came first.. – Sagive SEO Mar 15 '12 at 17:27

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.