web-dev-qa-db-ja.com

Shortcode_unautop()は壊れていますか?

/wp-includes/formatting.php内のshortcode_unautop()は、テキストブロック内でショートコードを見つけ、そこから折り返している段落タグを削除することになっています。

私はこのプロセスを通してそれを作る段落タグに関する問題を抱えています。

これがvar_dump($pee)からの出力で、これは私が関数の最初に置いたもの、すなわち処理される前の文字列です。

string(353) "<p>[row wrap="true"]</p>
<p>[one_half]</p>
<p>[text_block]Fusce blandit adipiscing libero, nec bibendum diam volutpat tempor.[/text_block]</p>
<p>[/one_half]</p>
<p>[one_half last="true"]</p>
<p>[text_block]Donec fermentum diam leo, ut convallis nisl tristique ut. Ut rhoncus leo vitae tempus pulvinar.[/text_block]</p>
<p>[/one_half]</p>
<p>[/row]</p>
"

予想どおり、すべて段落タグで囲まれています。

私はそれからvar_dump(preg_replace( $pattern, '$1', $pee ));を関数の終わりの直前に置きます。

string(346) "[row wrap="true"]</p>
<p>[one_half]</p>
<p>[text_block]Fusce blandit adipiscing libero, nec bibendum diam volutpat tempor.[/text_block]</p>
<p>[/one_half]</p>
<p>[one_half last="true"]</p>
<p>[text_block]Donec fermentum diam leo, ut convallis nisl tristique ut. Ut rhoncus leo vitae tempus pulvinar.[/text_block]</p>
<p>[/one_half]</p>
<p>[/row]
"

各ショートコードの代わりに、開始タグと終了タグをブロック全体から削除するだけです。私はglobal $shortcode_tags;の値をチェックしました、そして私の例の中のすべてのショートコードはそれにありました。

関数が壊れていませんか、それともあまり期待していませんか。私はそうではないと確信していますし、すべての段落タグを削除することになっています - しかし、予期しない空白文字や何かのような何か他のことが起こっていると考えるのはやめられません。

2
EpF

という関数はbrokenのようです。問題はtracにあります: https://core.trac.wordpress.org/ticket/14050

私は一時的に問題を解決するためにこれを使っています: https://core.trac.wordpress.org/attachment/ticket/14050/plugin.php 。このコードはまだ使用されているテストのいくつかを失敗しますが、それは私が説明した問題を完全に解決するので、それが壊れる実用的な何かを見つけない限り私はそれを使用します。

2
EpF

私はこの機能についてのWordPressの文書を読んでいて、あなたがそこに持っている行動は、起こると予想されるものです。

この関数はショートコードの内側ではなく外側できれいにします。正規表現は、ショートコードの内容をチェックしていません。

編集:

https://developer.wordpress.org/reference/functions/shortcode_unautop/ /

単独のショートコードを自動ラップしないでください

ショートコードが<p>...</p>wrappedになっていないことを確認します。

すべてがそこに言われています。

1
mathieuhays