添加p和br标签的快捷码

时间:2013-05-15 作者:JSP

我很抱歉,因为我意识到以前有人问过这个问题,我相信问题在于wpautop 函数添加了结束p或br标记,但我找到的每个解决方案都不起作用,因此我无法解决该问题。

我正在做:

class my_plugin {

  public static function init() {
    remove_filter(\'the_content\', \'wpautop\');
    add_shortcode(\'myshortcode\', array(__CLASS__, \'my_shortcode\'));
  }

  public static function my_shortcode() {
    /* do stuff here */
    ob_start();
    include(\'views/file.php\');
     return ob_get_clean();
  }
}

my_plugin::init();
我也尝试过:

remove_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'wpautop\' , 99 );
add_filter( \'the_content\', \'shortcode_unautop\', 100 );
以下是当前视图文件中的内容:

<form method="get" id="search" action="<?= get_permalink() ?>">
    <input name="st" id="st" class="text" type="text">
    <input id="search" class="submit" value="Search" type="submit">
</form>
下面是渲染的内容:

<form method="get" id="search" action="">
    <input name="st" id="st" class="text" type="text"><br>
    <input id="search" class="submit" value="Search" type="submit"><br>
</form>
如果我使用原始版本并删除所有换行符,它将正确渲染。问题是,它是原始文件的一个大大简化的版本,如果必须在一行上编辑“视图”,这将使编辑“视图”成为一场噩梦。

如果我没有返回视图内容,而是按照预期的方式对其进行了回显(当然,除了能够在其他内容中正确放置快捷码),那么这是值得的。

此外,这里的do stuff部分只是从请求中获取两个变量和一个API调用来设置视图中使用的变量。

3 个回复
最合适的回答,由SO网友:JSP 整理而成

不确定这是否对其他人有帮助,但问题的原因是主题的自定义格式化程序:

function my_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\', \'my_formatter\', 99);
FWIW:主题是Avenue(来自ThemeForest),它使用“Pyre”主题框架。另一个使用相同主题的站点没有出现问题的原因是其功能。php文件是作为子主题的一部分重新编写/更改的,不包括短代码。具有上述功能的php文件。

很抱歉浪费你的时间,但我真的很感谢你的时间/回答。

SO网友:testing

通过Remove WordPress automatic formatting (见第9点)我发现您必须使用raw 标签。就我而言:

[raw][album=1 template=portfolio][/raw]
我使用了NextGEN Gallery,在我的模板中有pbr 添加了标签。另一种选择是注释掉自定义格式化程序。我的主题是MG环球多媒体画廊。

SO网友:mindctrl

没有看到所有的代码,很难说。

我曾经看到过一个问题,即短代码函数内的标记中的某些换行符、空格或奇怪字符会导致WP自动添加那些不应该添加的字符。

看看您的函数,它可能类似于视图/文件中的内容。php正在这样做。确保没有奇怪的间距或不必要的换行符。甚至尝试删除换行符并将其重新添加。听起来很奇怪,但我以前见过。

结束

相关推荐

Wrap text around shortcode

我在插件中使用了一个短代码处理程序。短代码可以有不同的(可选)参数。例如,可以在静态WordPress页面上使用两个短代码,在短代码之前、之间和之后都有文本。例如: Lorem ipsum dolor sit amet, consetetur sadipscing elitr <table> <tr> <td>[shortcode option=\"1\"]</td>&#