Echo HTML in custom shortcode

时间:2014-03-12 作者:sunkast

我写了一个我正在努力完善的短代码。它基本上只是得到一个书签列表并打印出来。但我需要根据定义的类型在其周围添加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。但我不知道为什么这不起作用。

任何帮助都将不胜感激。

谢谢

1 个回复
最合适的回答,由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;
虽然您发布的代码不完整,但我没有看到其他明显的错误,所以我猜这就是问题所在。

结束

相关推荐

How do I make a shortcode?

边走边学。。。我已经构建了这个功能,但我需要它作为一个短代码。我该怎么做?$args = array( \'taxonomy\' => \'product_cat\' ); $terms = get_terms(\'product_cat\', $args); $count = count($terms); $i=0; if ($count > 0) { $cape_list = \'<p class=\"my_term-archive\