所以我有一个名为[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语句语法我肯定有点偏。
答案 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');