具有shortcode数组变量的条件

时间:2013-12-05 19:45:51

标签: wordpress

我有这段代码用于显示短代码。

<?php function img($atts) {
   extract(shortcode_atts(array(
      'source' => '<img src="'.get_template_directory_uri().'/images/noimage.jpg" />',
      'style' => 'online'

   ), $atts));

return '<div class="box extend box1" style="here is the conditional if statement, if the style variable is equal to online then output the background: url(images/online.jpg) else if the style variable is equal to notonline then output background: url(images/notonline.jpg)">'.$source.'</div>';
}

function register_shortcodes(){
   add_shortcode('img', 'img');
}

add_action( 'init', 'register_shortcodes');

&GT;

没有我试图实现的是这里是条件if语句,如果样式变量等于online然后输出背景:url(images / online.jpg)否则如果样式变量等于notonline则输出背景:url(images / notonline.jpg),有人可以分享至少一个想法如何实现吗?目前我正在寻找我的目标的方法,但不幸的是,还没有结果。

我对建议,建议和想法持开放态度。提前谢谢!

2 个答案:

答案 0 :(得分:0)

<?php function img($atts) {
    $source = $atts['source'];
    $style = $atts['style'];
    $ret .= '<div class="box extend box1" style="background: url(images/';
    if('online' == $style){
        $ret .= 'online.jpg';
    }else{
        $ret .= 'notonline.jpg';
    }
    $ret .= ');">'.$source.'</div>';
    return $ret;
}
...
?>

应该适用于您想要的内容,extract( shortcode_atts(...))过度

答案 1 :(得分:0)

这是if/else的简单问题。请注意,您无需将Shortcode declaration附加到init操作。另外,请始终在函数名前加上前缀,以避免与其他插件发生冲突。

function my_img($atts) {
   extract(shortcode_atts(array(
      'source' => '<img src="'.get_template_directory_uri().'/images/noimage.jpg" />',
      'style' => 'online'

   ), $atts));

   if( $style == 'online' )
       $bg = 'background: url(images/online.jpg)';
   else
       $bg = 'background: url(images/notonline.jpg)';

   return '<div class="box extend box1" style="'.$bg.'">'.$source.'</div>';
}

add_shortcode('img', 'my_img');