如果Shortcode中的语句显示基于Atts的不同内容

时间:2014-03-30 16:51:32

标签: php wordpress shortcode

所以我有一个名为[kerrigan]的短代码,我希望有3个atts,当使用时,每个都会显示短代码的不同内容,例如[kerrigan link="true"]它显示一定的回报,当我使用[kerrigan icon="true"]时,它显示与[kerrigan image="true"]相同的不同返回值,而不仅仅是[kerrigan]还有自己的内容也可以返回。因此,根据我作为atts

放入的内容,它几乎可以输出不同的内容
add_shortcode('kerrigan', 'kerring');
function kerrigan( $atts, $content = null )
{
array(
    'link'  => 'true',
    'icon'  => 'true',
    'image' => 'true',
    );

if($link == 'true'){
    return 'display content 1';
}

if($icon == 'true'){
    return 'display content 2';
}

if($image == 'true'){
    return 'display content 3';
}

}

我还在学习PHP所以我的if语句语法我肯定有点偏。

2 个答案:

答案 0 :(得分:0)

if($link = 'true'){

}

应该是

if($link == 'true'){
}

等等其他人!!

= is for assignment 

== is for comarison.

答案 1 :(得分:0)

function kerring($atts)
{
    if(is_array($atts)){
        foreach($atts as $key=>$value){
            switch ($key){
                case 'link': if($value == 'true') return 'content for link';
                case 'icon': if($value == 'true') return 'content for icon';
                case 'image': if($value == 'true') return 'content for image';
                default: return 'some default content for other atts';
            }
        }
    }
    return 'content without atts';
}

add_shortcode('kerrigan', 'kerring');

添加了数组检查,它有效,但我认为它是对foreach语句的误用,另一种方法是将$atts作为变量提取

function kerring($atts)
{
    extract($atts);

    if(isset($link)){
        if($link=='true'){
            return 'content for link';
        }
    }

    if(isset($icon)){
        if($icon=='true'){
            return 'content for icon';
        }
    }

    if(isset($image)){
        if($image=='true'){
            return 'content for image';
        }
    }

    return 'content without atts';
}

add_shortcode('kerrigan', 'kerring');