Can shortcodes contain conditional statements? Even without them my shortcode renders blank page

The following code is supposed to allow for a shortcode that includes many attributes, but not all of the attributes may always be present in which case I do not want the containing element to show anything. However, with or without the conditional statements, when I upload my functions file I receive only a blank page on the front and back end.

Here is the full shortcode with conditional statements:

Read More
function info($atts, $content = null) {
extract(shortcode_atts(array(
    "name" => '',
    "image" => '',
    "address" => '',
    "phone" => '',
    "email" => '',
    "website" => '',
    "description" => '',
    "amenities" => ''
), $atts));
return '<span class="sort">'
if($image) { '<img src="'.$image.'" />'}'
<span class="name">'.$name.'</span>
<span class="details">'
if($phone) { $phone }
if($address) { '&bull; <a href="http://maps.google.com/?q='.$address.'" target="_blank">'.$address.' <img src="<?php bloginfo('template_directory'); ?>/_/images/mapmarker.png" width="16" height="16" alt="Map" /></a><br/>'}
if($email) { '<a class="infomail" href="mailto:'.$email.'">Send Email</a>' }
if($website) { '<a class="infosite" href="'$website'">Visit Website</a>' }
if($description) { '<p class="infodetails">'.$description.'</p>' }
if($amenities) { '<p class="amenities">'.$amenities.'</p>' }
'</span>
</span>';
}

add_shortcode("info", "info");

Thanks for your suggestions!

Related posts

Leave a Reply

1 comment

  1. your conditional breaks the concatenation of the strings (which is not in your code, anyway)

    try to re-write this section:

    function info($atts, $content = null) {        
    extract(shortcode_atts(array(            
        "name" => '',            
        "image" => '',            
        "address" => '',            
        "phone" => '',            
        "email" => '',            
        "website" => '',            
        "description" => '',            
        "amenities" => ''        
        ), $atts)); 
    $output = '<span class="sort">'; 
    if($image) { $output .= '<img src="'.$image.'" />';}
    $output .= '<span class="name">'.$name.'</span> <span class="details">';
    if($phone) { $output .= $phone; } 
    if($address) { $output .= ' &bull; <a href="http://maps.google.com/?q='.$address.'" target="_blank">'.$address.' <img src="' . get_bloginfo('template_directory') . '/_/images/mapmarker.png" width="16" height="16" alt="Map" /></a><br/>'; } 
    if($email) { $output .= ' <a class="infomail" href="mailto:'.$email.'">Send Email</a>'; } 
    if($website) { $output .= ' <a class="infosite" href="'.$website.'">Visit Website</a>'; } 
    if($description) { $output .= '<p class="infodetails">'.$description.'</p>'; } 
    if($amenities) { $output .= '<p class="amenities">'.$amenities.'</p>'; } 
    $output .= '</span> </span>'; 
    return $output;
    }
    
    add_shortcode("info", "info");