私は自分のプラグインで次のコードを使ってページに<textarea>
フィールドを表示しています。
echo '<textarea required="required" name="Message" class="textarea" cols="70" rows="10">'.esc_textarea($message).'</textarea>';
ただし、メッセージに改行文字が含まれている場合、WordPressは<p>
タグと<br />
タグをtextareaコンテンツに挿入しているようです。私はこれがデフォルトのwpautop()フィルタによって引き起こされていると思います。
ページ上の<textarea>
コンテンツのフィルタリングを無効にする方法はありますか?
編集
私のプラグインがどのように機能するかについてのもう少しの情報。これはthe_content
のフックを作成します。これは特定のページのコンテンツにデータを追加します。 <textarea>
フィールドではなく、wpautop
フォーマットを追加コンテンツに適用したいのです。
これが私のプラグインがどのように設定されているかの大まかな概要です:
function get_special_content()
{
$text = '';
// Customized content is appended to text here
// including the textarea field
return $text;
}
function my_plugin_content_hook($content)
{
if(is_some_special_page()) {
return $content.get_special_content();
}
return $content;
}
add_action('the_content', 'my_plugin_content_hook');
フックキューの最後に自分の機能をプッシュすることに優先順位を追加します。
add_action('the_content', 'my_plugin_content_hook', 1000);
それから、あなたのget_special_content
関数で、あなたがそれを適用したいコンテンツに手動でwpautop
を適用する必要があるでしょう。
function get_special_content()
{
$text = '';
$autopeed = 'content to autop';
$text .= apply_filters('wpautop',$autopeed);
$text .= "your textarea code";
return $text;
}
私はそれがあなたの問題を解決すると信じています。
私はwpautop
が<pre>
タグの内容を保存することを発見しました。 <pre>
タグの周囲に<textarea>
タグを配置することで、テキスト領域の内容が変更されるのを防ぐことができます。
echo '<pre><textarea>'.esc_textarea($message).'</textarea></pre>';
なぜwpautop
がデフォルトで<textarea>
タグを無視しないのか、よくわかりません。テキスト領域の内容にwpautop
を適用したいというシナリオは想像できません。多分それはただの見落としです。