我创建的要在wordpress环境中运行的简码有问题。
我不是使用简码的专家,这很重要:
add_shortcode('key_value' , 'key_value' );
function key_value( $atts, $content = null ) {
$atts = shortcode_atts( array(
'title' => '',
'url' => '',
), $atts );
if ($atts['title']) {
$html = '<li><strong>'.$atts['title'].': </strong>'.$content.'</li>';
} elseif ($atts['url'] && $atts['title']) {
$html = '<li><a href="'.$atts['url'].'" target="_blank">'.$atts['title'].'</a></li>';
}
return $html;
}
我想返回第二个if语句,因为我有很多这样的短代码:
[key_value title="Delivery"]Fast[/key_value]
[key_value title="Duration"]2 weeks[/key_value]
它们工作正常,但是最后一个:
[key_value title="Info Session" url="/info/"][/key_value]
不起作用,我也不明白为什么,因为,如果我var_dump我的数组$ atts,我就能看到两个值。
有什么建议吗?
答案 0 :(得分:1)
您的代码已进入第一个条件。更改逻辑以首先执行else
条件,或者换句话说,如果两个属性都使用它,否则仅检查标题:
if ($atts['url'] && $atts['title']) {
$html = '<li><a href="'.$atts['url'].'" target="_blank">'.$atts['title'].'</a></li>';
} elseif ($atts['title']) {
$html = '<li><strong>'.$atts['title'].': </strong>'.$content.'</li>';
}