PHP函数内部的ECHO语句

时间:2015-02-20 20:38:39

标签: php html5 wordpress

我在Wordpress中使用此功能:

function wpstudio_doctype() {
  $content = '<!DOCTYPE html>' . "\n";
  $content .= '<html ' . language_attributes() . '>';
    echo apply_filters( 'wpstudio_doctype', $content );
}

问题是该函数在$content标记上方显示<!DOCTYPE html>,而不是在HTML标记内添加字符串。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:6)

language_attributes()不会返回属性,它会回复它们。

// last line of language_attributes()
echo apply_filters( 'language_attributes', $output );

这意味着它将在您的字符串汇编之前显示。您需要使用输出缓冲捕获此值,然后将其附加到字符串中。

// Not sure if the output buffering conflicts with anything else in WordPress
function wpstudio_doctype() {
  ob_start();
  language_attributes();
  $language_attributes = ob_get_clean();

  $content = '<!DOCTYPE html>' . "\n";
  $content .= '<html ' . $language_attributes . '>';
    echo apply_filters( 'wpstudio_doctype', $content );
}

答案 1 :(得分:0)

代替输出缓冲,只需在ECHO语句中使用get_language_attributes()。在这种情况下:

function wpstudio_doctype() {
  $content = '<!DOCTYPE html>' . "\n";
  $content .= '<html ' . get_language_attributes() . '>';
    echo apply_filters( 'wpstudio_doctype', $content );
}