有一个典型的网站wordpress和一个简单的简码。
function button_promocode_func( $atts ){
extract( shortcode_atts( array(
'link' => 'http://google.com',
'title' => 'Я промокод',
), $atts ) );
$buf= '<div class="sp_button"><div class="sp_button_link">
<a href="'.$link.'" title="'.$title.'" target="_blank" rel="nofollow" >'.$title.'</a></div>';
return $buf;
}
add_shortcode('button_promocode', 'button_promocode_func');
我发现了以下问题:如果在文章的内容区域放置了一个短代码,它与文本没有被一个空段落隔开,那么它就会被淘汰出一般流程。那些。我们得到一个空的段落<p></p>
,然后是一个简码,然后是没有标签的内容。
如果有一个空段落,那么一切都显示正常,短代码是独立的,段落中的文本是独立的。
具体来说,由于这篇文章,这个问题得到了解决
在functions.php中注册
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);
一切都会好起来的,但是如果短代码先出现在文本之前,那么现在它会简单地显示为文本 [button_promocode],并且列表中的下一个会正常显示。
可能是什么原因以及如何解决?
首先,简码中的布局是错误的。两位开场女主角和一位闭幕女主角。这样的简码会破坏任何布局。
其次,内容中的文本必须有段落,并且您试图在 p 中插入一个 div。这不能通过定义来完成。浏览器然后用 a 关闭段落
</p>,并在你的 div 之后用 a 再次打开它<p>。再多的 WP 内容操作也无济于事。用 span 替换短代码中的两个 div。或多或少是这样的:
并删除对“the_content”过滤器的操作。