web-dev-qa-db-ja.com

WordPressのTinyMCEが<p>&nbsp; </p>ではなく<br>タグで改行を置き換えるように強制する方法

新しい行を入力するためにテキストにEnterキーを押すと、TinyMCEエディタが<p>&nbsp;</p>タグの代わりに<br>を挿入します。

WPのTinyMCEに、改行を<br>ではなく<p>&nbsp;</p>に置き換えるよう強制するにはどうすればよいですか?

6
Derfder

GavinR によって示唆された答えは正しいです。

ただし、推奨されているプラ​​グインをインストールする必要はありません。このミニプラグインを追加するだけで、設定が完了します。

<?php
defined( 'ABSPATH' ) OR exit;
/* Plugin Name: TinyMCE break instead of paragraph */
function mytheme_tinymce_settings( $tinymce_init_settings ) {
    $tinymce_init_settings['forced_root_block'] = false;
    return $tinymce_init_settings;
}
add_filter( 'tiny_mce_before_init', 'mytheme_tinymce_settings' );

Enterキーを押すと、新しい段落を作成する代わりに<br>タグが挿入されます。ただし、2つの連続した改行を作成しても、投稿コンテンツに wpautop filterが適用された結果、テキストは段落に分割されます。最初にこのフィルタを削除して、すべての改行を<br>タグで置き換える新しいフィルタを作成する必要があります。テンプレートにfunctions.phpタグを表示するには、<br>に次のようなものを追加します。

remove_filter ( 'the_content', 'wpautop' );
add_filter ( 'the_content', 'add_newlines_to_post_content' );
function add_newlines_to_post_content( $content ) {
    return nl2br( $content );
}
10
Dero

このプラグインをインストールしてください: http://wordpress.org/plugins/advanced-tinymce-configuration/ /

次に forced_root_block をFALSEに設定します。

2
GavinR

段落ではなく改行が必要になるシナリオがどうなっているのかわからないので、これはうまくいかないかもしれません。特定の投稿タイプまたは特定のテンプレート用のものであれば、これを実行できます。

  1. 高度なカスタムフィールドプラグインを実装します。
  2. テキスト用のカスタムフィールドを作成し、フォーマットを「改行を<br />タグに変換する」に設定したフィールドタイプ「textarea」を選択します。
  3. このカスタムフィールドの「場所」を、必要な投稿タイプまたはテンプレートにのみ表示されるように設定します(必要に応じて、このフィールドは投稿タイプまたはテンプレートのエディタを置き換えることができます)。

明らかに、このアプローチはメディアのリンクや挿入を含む、TinyMCEによって通常提供されているすべての通常のフォーマットオプションを削除します。だから、それはあなたのための選択肢ではないかもしれません。

0
Ray Gulick

もしあなたが<br>(SHIFT + ENTER)の後の文の始めを意図したいのなら、カスタムソリューションを使う必要があるかもしれません:

functions.phpに追加:

add_action('init', 'add_cust_button');
function add_cust_button() {
   if ( get_user_option('rich_editing') == 'true') {
     add_filter('mce_external_plugins', 'add_mycust_plugin');
     add_filter('mce_buttons_2', 'register_mycust_plugin');
   }
}
    function register_mycust_plugin($buttons) {
       array_Push($buttons, "|", "indent_button");
       return $buttons;
    }
    function add_mycust_plugin($plugin_array) {
       $plugin_array['my_custom_button'] = get_bloginfo('template_url').'/scripts/button.js';
       return $plugin_array;
    }

add_filter( 'tiny_mce_version', 'my_refresh_mce');
function my_refresh_mce($ver) {
  $ver += 3;
  return $ver;
}

次に、テーマフォルダにフォルダ "scripts"を作成し、その中にアイコンファイル( "indent_img.png")とjavascriptファイル( "button.js")を作成します。

(function() {
    tinymce.create('tinymce.plugins.Nlineeplg', {
        init : function(ed, url) {

            ed.addButton('indent_button', {
                title : 'indent',
                image : url+'/indent_img.png',
                onclick : function() {
                    ed.execCommand('mceInsertContent', false, '<span style="margin:0 0 0 8px;">&nbsp;</span>');
                }
            });

        },
        createControl : function(n, cm) {
            return null;
        }
    });
    tinymce.PluginManager.add('my_custom_button', tinymce.plugins.Nlineeplg);
})();

次に、EDITORページには特別なボタンがあり、文の先頭をクリックしてそのボタンをクリックすると、インデントが付けられます。

0
T.Todua

私の知る限りでは、これを行う唯一の方法はwpautopフィルタを削除することです。

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

これは間違いなくWordPressが '人工的な' pタグを追加するのを防ぎます。

私の考えは、WordPressはやや「素人」のために設計されているからです。彼らはwpautopフィルタに含める必要があると感じています。有効なHTMLの一連の「チェック」を実行し、それに応じてコンテンツを調整します。

これはHTML側に触れることのない人にとっては素晴らしいかもしれませんが。これは多くのユーザーがHTMLを「いじる」ことを試みている側の悩みの種です。

注:wpautopフィルタを削除すると、すべての投稿/ページ(新旧)にフィルタが使用されなくなります。これにより、コンテンツエディタ内のすべてのHTMLが一緒に(つぶされて)表示されます。ビジュアル面は問題なく表示されますが、テキスト面は押しつぶされています...コードの修正が困難です。

0
josh

Bigsmokeのおかげで、wpautopで遊ぶことが可能です。
A - 選択したページでwpautopを有効または無効にする
B - function.phpを変更しないで
C - Wpautopフィルタが削除された場合、古いページをめくることなく
D - エディタのテキスト側にコンテンツを表示しない

http://wordpress.org/plugins/wpautop-control/ /

今、私は自動段落を楽しんで私のテキストレイアウトの大部分を作ることができますそしてそれからwpautopをオンまたはオフにすることなく面を完成させることができます。

0
bradypus