1

在 wordpress 中,我在<div>我的简码内容中输出一些 s。问题是因为 wordpress 将段落放在<p></p>标签内,该行在所在的位置被打破<div>。我想要实现的是<p> </p><br />. 例如,如果我的内容如下所示:

<p>[shortcodes attr='somethig']value[/shortcode] text<br />
[shortcodes attr='somethig']value[/shortcode] text<br />
text<br />
text [shortcodes attr='somethig']value[/shortcode] text </p>
<p>text<br />
text [shortcodes attr='somethig']value[/shortcode] text<br />
text</p>
<p> text without shortcode </p>
<p>text [shortcodes attr='somethig']value[/shortcode] text </p>

我需要它来转换它

<br/>[shortcodes attr='somethig']value[/shortcode] text<br />
[shortcodes attr='somethig']value[/shortcode] text<br />
text<br />
text [shortcodes attr='somethig']value[/shortcode] text <br />
<br/>text<br />
text [shortcodes attr='somethig']value[/shortcode] text<br />
text<br/>
<p> text without shortcode </p>
<br/>text [shortcodes attr='somethig']value[/shortcode] text <br/>

我试图自己解决问题,但我的 preg_replace 表达式正在捕获整个内容,而不是单个<p> </p>块。

使用 jQuery 的解决方案也可以(但<div>段落中必须包含具有特定类的 a 而不是短代码)

LE:以下 jQuery 工作。但是,我仍在等待 PHP 中更优雅的解决方案。

$('p').each(function() {
    if ($(this).next().find('.measurement_value').length > 0) 
    {
        $(this).replaceWith(  '<br />' + $(this).html());
    }
});
4

2 回答 2

1

试试这个 jquery 代码:

$('p').each(function() {
    if ($(this).find('.class-of-the-div').length > 0) {
        $(this).replaceWith($(this).html() + '<br />');
    }
});

但是,通常情况下,Wordpress在服务器端替换<br />为。<p></p>

于 2013-07-17T10:52:10.233 回答
0

<p>你为什么不通过添加remove_filter('the_content', 'wpautop');functions.php来摆脱

于 2013-07-17T11:08:37.647 回答