我写了一个我正在努力完善的短代码。它基本上只是得到一个书签列表并打印出来。但我需要根据定义的类型在其周围添加HTML。
extract(shortcode_atts(array(\'cat\' => \'\', \'type\' => \'\'), $atts));
$bookmarks = get_bookmarks( array(
\'orderby\' => \'name\',
\'order\' => \'ASC\',
\'category\' => $cat
));
if (is_single()){
if($type == \'audio\'){echo \'<div class="sub-audio"><h6 class="sub_btn">Audio</h6>\';}
if($type == \'video\'){echo \'<div class="sub-video"><h6 class="sub_btn">Video</h6>\';}
foreach ( $bookmarks as $bookmark ) {
printf( \'<a class="wpb_button_a" href="%s"><span class="wpb_button wpb_%s wpb_default2"><i class="icon-%s"> </i>%s</span></a>\', $bookmark->link_url, $bookmark->link_name, $bookmark->link_name, $bookmark->link_name );
}
echo \'</div>\';
}
因此,根据我是将类型定义为音频还是视频,它应该根据类型输出HTML。但我不知道为什么这不起作用。
任何帮助都将不胜感激。
谢谢
最合适的回答,由SO网友:s_ha_dum 整理而成
我不知道“这不起作用”是什么意思,但短代码不应该echo
任何东西您应该将字符串和return
信息技术
if (is_single()){
$str = \'\';
if($type == \'audio\'){
$str .= \'<div class="sub-audio"><h6 class="sub_btn">Audio</h6>\';
}
if($type == \'video\'){
$str .= \'<div class="sub-video"><h6 class="sub_btn">Video</h6>\';
}
foreach ( $bookmarks as $bookmark ) {
$str .= sprintf(
\'<a class="wpb_button_a" href="%s"><span class="wpb_button wpb_%s wpb_default2"><i class="icon-%s"> </i>%s</span></a>\',
$bookmark->link_url,
$bookmark->link_name,
$bookmark->link_name,
$bookmark->link_name
);
}
$str .= \'</div>\';
}
return $str;
虽然您发布的代码不完整,但我没有看到其他明显的错误,所以我猜这就是问题所在。