我正在编写一个插件,制作一个简单的HTML表单。我在考虑使用echo
对于所有输出,但我似乎无法控制输出的HTML的格式(用于调试、外观整洁的HTML,而不是讨论用户对页面的看法)。
如果我有这样的回声:
echo \'<sometag>
<otherTag>\';
它生成HTML,如:
<sometag><br><otherTag>
因此,我将echo语句更改为:
echo \'<sometag>\';
echo \'<otherTag>\';
并获得HTML,如:
<sometag><otherTag>
最后,我将echo语句更改为:
echo "<sometag>\\n<otherTag>"
但是WordPress将
\\n
变成一个
<br>
!
要在php之外使用HTML输出文本,唯一的方法是使用格式良好的HTML吗?
还是有办法echo
(或print
) 只输出我发送的内容?
好的,我找到了一些指向“为什么”的代码。在我看来,这个主题的制作者正在所有短代码上使用wptexturize和wpautop,很可能假设所有短代码都是他们自己的(按钮、ui小部件)短代码,让wptexturize在短代码上工作有助于一些主题设置。我可以想出更好的方法。。。
我正在为此主题编写插件,不会编辑主题,所以我想我会告诉他们使用[原始]短代码路由。
主题代码来自/themename/functions/shortcodes/setup。php
<?php
// Remove WordPress automatic formatting
function theme_formatter ($content) {
$new_content = \'\';
$pattern_full = \'{(\\[raw\\].*?\\[/raw\\])}is\';
$pattern_contents = \'{\\[raw\\](.*?)\\[/raw\\]}is\';
$pieces = preg_split ($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($pieces as $piece) {
if (preg_match ($pattern_contents, $piece, $matches)) {
$new_content .= $matches[1];
}
else {
$new_content .= wptexturize (wpautop ($piece));
}
}
return $new_content;
}
remove_filter (\'the_content\', \'wpautop\');
remove_filter (\'the_content\', \'wptexturize\');
add_filter (\'the_content\', \'theme_formatter\', 99);
// Enable shortdoces in sidebar default Text widget
add_filter (\'widget_text\', \'do_shortcode\');