我创建了一个短代码[pncode]
这让我可以封装一些编程语法并应用一些样式。值得注意的是,它预处理文本并使其成为单空格(如果有帮助,请参阅下面的完整CSS)。
在wordpress编辑器中,我希望能够像这样封装语法:
[pncode]
some sample code
some sample code
some sample code
[/pncode]
但这会在开头插入一个“return”。我可以通过如下方式添加代码来解决此问题:
[pncode]some sample code
some sample code
some sample code
[/pncode]
但它看起来不那么整洁。
以下是上述任一示例的图片:
我的问题:
Is there a way to ignore the first line-break after the [pncode] so I can enter the first code above in the visual editor and it look like the 2nd displayed code in the image.我不确定您是否需要以下所有信息,但我会将其包括在内,以便全面了解:
下面是应用于任何封装在其中的CSS[pncode]
.pncode {
background: #ddd;
font-family: consolas, courier, monospace;
white-space: pre;
box-shadow: 3px 3px 3px #999;
border-style: solid;
border-width: 1px;
border-color: #333;
text-align: left;
padding: 5px;
line-height: 90%
width: 98%;
overflow: auto;
}
.pncode br {
display: none;
}
它由CSS封装,添加到我的函数中。php:
function pncode_shortcode_function( $atts , $content = null ) {
return \'<div class="pncode">\' . $content . \'</div>\';
}
add_shortcode( \'pncode\', \'pncode_shortcode_function\' );
EDIT: 为了添加更多细节,由于
<BR>
. 它的创建是因为
[pncode]
, 它将由该短代码包围的文本设置为预格式化。
Wordpress在可视化编辑器中添加了大量BR,这就是为什么我的CSS中有这一部分:
.pncode br { display: none; }
它使得wordpress添加的BRs被忽略。
但是,我特别想消除的换行符是由于标记为预格式化文本的a“div”中的“enter”而添加的。
再说一遍,我甚至不知道这是否可能。我只是知道我不是专家,所以我想我应该在一个论坛上提问,在那里专家可以证实这一点,或者最好找到一个创造性的解决方案。
SO网友:birgire
你可以试着换掉多余的<br />
在短代码内容的开头。
您可以通过多种方式实现这一目标,但这里有一个示例:
if( \'<br />\' === substr( ltrim( $content ), 0, 6 ) )
$content = substr( ltrim( $content ), 6 );
return \'<div class="pncode">\' . $content . \'</div>\';
我们在哪里玩
substr()
和
ltrim()
功能。
更新:
感谢@userabuser的评论。
如果我们要删除br
标记,从短码字符串开始,我们可以尝试构造这种reg ex替换:
$content = preg_replace( \'#^\\s*(<br\\s*/?>\\s*)+#i\', \'\', $content );
Example:
短代码内容:
<br /> <br>
<BR> <bR>
some sample code <br />
some sample code <br />
some sample code <br />
将显示为:
some sample code <br />
some sample code <br />
some sample code <br />