私はすでにWordpressが<p>
タグを追加したケースに出くわしたでしょう。しかし今、私は反対の状況を扱っています。 <p>
タグ内に[]ショートコードを追加すると、WordPressは自動的に<p>
タグを削除します。
<p>[anyshortcode]Hello World[/anyshortcode]</p>
になります:
Hello World
<p>
タグにdir = "ltr"を追加すると問題が解決するようですが、すべての<p>
タグにプログラムで追加する方法はあるでしょうか。
これを修正する方法についての任意のアイデア?
これはFoxsk8がコメントで述べたものとほとんど同じです、従って信用は彼に行くべきですが、これらの追加の指示は役に立つでしょう。 TinyMCE Advanced というWordPressプラグインがあなたの問題を解決します。
このプラグインは、消えているSettings > TinyMCE Advanced
タグを修正するオプションを<p>
内に持っています。 Stop removing the <p> and <br /> tags when saving and show them in the Text editor
というラベルの付いたチェックボックスをオンにすると、<p>
タグはそのまま残ります。
TinyMCEは編集を容易にするようにプログラムされています(HTMLに精通していることは多くの場合そうではありません)。デフォルトでは[BLOCKS]の周りの<p>
タグ付けを受け入れてはいけません。これは、 "[]"がWPだけでなくPHPベースのCMSでもショートコードに使用されているためです。ショートコードには適切なコンテンツラッパーが必要です。
解決策は、コンテンツが希望どおりに折り返されるように、ショートコードコードに<p>
タグを追加することです。
あなたのfunction.phpファイルに以下のコードを追加することができます
function content_formatter($content){
$new_content = '';
$pattern_full = '{(\[raw\].*?\[/raw\])}is';
$pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($pieces as $piece) {
if (preg_match($pattern_contents, $piece, $matches)) {
$new_content .= $matches[1];
} else {
$new_content .= wptexturize(wpautop($piece));
}
}
$array = array(
'<p>[' => '[',
']</p>' => ']',
']<br />' => ']'
);
$new_content = strtr($new_content, $array);
return $new_content;
}
さて、この関数を必要なときにいつでも呼び出してください。
<?php echo content_formatter( get_field('field_name') ); ?>