Wordpress Shortcode Auto-P问题

时间:2015-09-24 21:56:19

标签: php wordpress shortcode

我是Wordpress的新手,正在实施短代码。我的短代码非常简单,预期输出符合HTML5标准:

add_shortcode( 'my_code', function( $attributes ){
    return '<a href="#"><div></div></a>';
});

当这个被发出时,我得到以下HTML:

<a href="#">
<div></div>
<p></a>

正如您所看到的,似乎正在进行自动格式化。我已按照建议herehere安装了this plugin,但都无济于事。我正在寻找使这种格式化发生的神奇秘密。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我无法重新创建问题,在运行示例后,我得到正确的输出:

<a href="#"><div></div></a>

(原始HTML源代码,不是控制台显示的修改后的源代码,控制台中的HTML面板显示浏览器显示内容的实时视图)

问题是当短代码输出包含在段落中时,输出类似于:

<p>Some text <a href="#"><div></div></a></p>

允许这个损坏的HTML(在<div>内的HTML5 <a>中受到指责,但<div>内的<p>not)在WordPress过滤器{ {3}}。该过滤条件包含带<p>标记的文字,用<p>标记替换双重换行符,用<br />标记替换单换行符。如果短代码在文本之后,则其输出将成为段落的一部分。为了避免这种情况,只需在文本和短代码之间添加新行。

Some text

[my_code]

Some text

答案 1 :(得分:0)

正如我所说,我是Wordpress的新手,我正在学习绳索。事实证明问题是由于插件。我停用了所有插件,问题就消失了。所以,经验教训:如果你有一个非常奇怪的问题,首先禁用插件,看看是否是源。感谢@Danijel帮助我解决这个问题!

编辑:FWIW,导致此问题的插件就是这个(v1.0.18):https://wordpress.org/plugins/smpl-shortcodes/