PHP echo失败但返回有效?

时间:2013-12-06 22:37:26

标签: php wordpress wordpress-plugin echo

我为wordpress插件shortcode制作了以下内容,return工作正常,但echo/print似乎不起作用。文件中的任何其他位置都没有echo/print,所以我猜它是禁用的,或者其他东西,如果可能的话。

因此,如果不使用echo/print,我如何使用if而不是return将以下内容压缩为一个echo/print语句。数组$subjecttitle中有20个主题,因此更优雅的解决方案会更好。

function subjecttitle_func( $atts ){
  $subjecttitle = get_field('gcse_subjects');

  if (!empty($subjecttitle[0])) {
    echo '<h2>' . $subjecttitle[0] .'</h2>'.'<hr></hr>';
  } else { 
    return "";
  } 

  if (!empty($subjecttitle[1])) {
    echo '<h2>' . $subjecttitle[1] .'</h2>'.'<hr></hr>';
  } else { 
    return "";
  }
}

add_shortcode( 'subjecttitle', 'subjecttitle_func' );

2 个答案:

答案 0 :(得分:0)

如何使用implode例如

echo '<h2>' . implode(' - ',$subjecttitle) .'</h2><hr></hr>';

这将导致单个h2-tag一次显示所有主题标题(以 - 分隔) 或

echo '<h2>' . implode('</h2><hr></hr><h2>',$subjecttitle) .'</h2><hr></hr>';

如果你想为每个sibjecttitle提供一个自己的h2标签

答案 1 :(得分:0)

据我所知,在运行the_content()之前处理短代码(通常是你的短代码通过cms放置的地方),所以如果你从那里回复它们可能会出现在奇怪的地方。如果您在浏览器中搜索源代码以查找回显的内容,那么它可能会在某处

返回输出是正确的方法,你可能想做类似的事情:

/**
* Create and return the subject title string
*/
function subjecttitle_func( $atts ){

  $subjecttitle = get_field('gcse_subjects');
  $output = '';

  foreach ($subjecttitle as $title) { 
    if ( strlen($title) > 0 ) {
      $output .= '<h2>' . $title .'</h2>'.'<hr />';
    }
  }

  return $output;

}

/** 
* Add the subject title shortcode
*/
add_shortcode( 'subjecttitle', 'subjecttitle_func' );