web-dev-qa-db-ja.com

テキストエリアのフォーマットを無効にする

私は自分のプラグインで次のコードを使ってページに<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');
1
flashk

フックキューの最後に自分の機能をプッシュすることに優先順位を追加します。

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;
}

私はそれがあなたの問題を解決すると信じています。

2
s_ha_dum

私はwpautop<pre>タグの内容を保存することを発見しました。 <pre>タグの周囲に<textarea>タグを配置することで、テキスト領域の内容が変更されるのを防ぐことができます。

echo '<pre><textarea>'.esc_textarea($message).'</textarea></pre>';

なぜwpautopがデフォルトで<textarea>タグを無視しないのか、よくわかりません。テキスト領域の内容にwpautopを適用したいというシナリオは想像できません。多分それはただの見落としです。

0
flashk