Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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:

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!

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

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");
share|improve this answer
    
Thanks so much! That worked perfectly! Really appreciate your time :) –  5t3ph Jun 13 '11 at 21:06
add comment

Your Answer

 
discard

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.