1

<div>ワードプレスでは、ショートコードのコンテンツに沿っていくつかの s を出力しています。問題は、ワードプレスが段落を<p></p>タグ内に配置するため、行がその場所で壊れていること<div>です。私が達成したいのは<p> </p>、ショートコードを囲む which をに置き換えること<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

functions.php<p>に追加するだけでなくならないのはなぜですかremove_filter('the_content', 'wpautop');

于 2013-07-17T11:08:37.647 に答える