サポート » 使い方全般 » ビジュアルモードで記事を書くと全く改行されないテーマについて

  • 解決済 satochan

    (@satochan)


    有料のテーマ(日本製)を購入して、ポータルサイトを構築しているのですが、
    ビジュアルモードにて、(固定ページ、投稿ページ共に、)管理画面上で改行しても、

    公開ページ上では、全く改行されなかった(画面が文字で埋まってしまう)ため、そのテーマの購入元に、テーマのバグなのかどうか質問したところ、brBRbr等のプラグインで対処してください、

    との回答をもらいました。

    今構築しているポータルサイトは、寄稿者ユーザーからの投稿が公開ページに反映される
    ようにするため、ビジュアルモードでユーザーが管理画面上で改行した場合、
    公開ページ上でもそれが反映されることが必須です。

    brBRbrというプラグインは、フォーラムで情報を得ると、
    WordPressのコアファイルの改変をするプラグインだから、色々な
    問題が起こりうるということを認識しているため、

    できることなら、brBRbrのプラグインを使うという選択肢以外で対応
    したいと思っています。

    寄稿者ユーザーは、HTMLのことを知らない人がほとんどという前提ですので、
    ビジュアルモードで改行したら、それが公開ページで反映されるというように
    したいです。

    brBRbrのプラグインを使う以外の手段を、もし知っている方がいたら、
    どうかご教示いただけないでしょうか。

15件の返信を表示中 - 1 - 15件目 (全24件中)
  • h1965

    (@h1965)

    テーマによって経験あります。
    私は、改行後に半角ドットやコンマを入れて、その文字に色を付けて誤魔化していました。
    背景の色に合わすと、余程で無い限りわかりません。

    荒技ですが、寄稿者ユーザが居るので参考になりませんね。(-_-;)
    すみません。

    nobita

    (@nobita)

    こんにちは

    以前ブログで、

    WordPressで改行( br要素 )を自由に使う、15行スクリプト

    というのを書きました。

    なんかのお役に立ちますか?

    動かないとか、ありましたら 書き込んでください

    トピック投稿者 satochan

    (@satochan)

    nobitaさん

    ありがとうございます!

    早速、以下のコードをfunctions.phpの先頭の<?phpのあとにコピペし、
    style.cssに、Webページに記載があった(hr + br.space,で始まる)スタイルルールをコピペして試してみました。

    しかしながら、新規に投稿ページをつくって、文章を記入して、改行しても、公開ページ上でなぜか改行されません。。

    もし、私のアクションで不適切な部分がありましたら、ご教示いただけますと幸いです。

    /*
    Script Name: Force Break2
    Author: Tenman
    Author URI: http://www.tenman.info/
    Version: 0.1
    License: GNU General Public License v2 or later
    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    */
    add_filter( 'wp_insert_post_data' , 'filter_handler' , '99999');
    
    function filter_handler( $data){
    
    $pattern = '/(&nbsp;(\s)*)+/';
    $data['post_content'] = preg_replace_callback(
                $pattern,
                "nbsp2br",
                $data['post_content']);
      return $data;
    }
    
    function nbsp2br($matches){
    	$count = substr_count( $matches[0], '&nbsp;' );
    	return '<br style="line-height:'.$count * 1.5.'" />'."\n\n" ;
    }
    nobita

    (@nobita)

    こんにちは

    Force Break2 の場合は、スタイルシートの追加は必要ありません。

    上記の関数だけで、動作します。
    現在環境の違う2サイトだけでしかテストを行っていないので、関数に問題があるかもしれません。

    以下の件について、解答ご協力いただけると、うれしいです。

    この関数が機能しているかどうかを見分ける方法

    ソースを見たり、タブをhtmlに切り替えると、連続改行は、以下のようなBR要素に置き換えられます。

    <br style="line-height:4.5;" />

    (上のスタイルの意味:連続改行は、2個目から&nbsp;にワードプレスが置き換えるので、3個連続していて、それらに、line-height 決めうちで1.5なので、4.5になっています )

    Q1.複数改行が行われている場合は、brに変換されているかどうか、確認してください。

    Q2.brが見つかった時には、brの前後の文字列がp要素で囲まれているかどうかを、確認して知らせてください

    もし、brに変換されてなければ、複数改行した場所のソースをチェックしてください。

    Q3.複数改行を行った場合、最初の改行以外は、tinymceが、&nbsp;に置換して保存するのが、通常の動作なので、htmlソースに、&nbsp;(&は半角)があるかどうかをお知らせください。

    Q4.出来れば、改行されないコンテンツのソースを確認していただき、ソースに改行が含まれているかどうか、教えてください。

    トピック投稿者 satochan

    (@satochan)

    ありがとうございます。

    いま、確認いたしました。

    Q1-Q4の回答の前に、

    基本的な挙動を調べました。

    ビジュアルモードで、以下の文を以下の改行数で書きました。

    みなさん
    こんにちは
         ←2回改行
    わたしは
         ←3回改行

    山田太郎です。

    トピック投稿者 satochan

    (@satochan)

    (すみません、途中で投稿してしまいました)

    そして、HTMLモードを見てみると、

    みなさん、
    こんにちは、
     
    わたしは
     
     
    山田太郎です。

    となっていました。

    そして、更新ボタンを押すと、

    みなさん、
    こんにちは、
    <br style=”line-height:1.5″ />
    わたしは
    <br style=”line-height:3″ />
    山田太郎です。

    と変化しました。

    そして、公開ページを見てみると、

    みなさん、こんにちは、
    わたしは
    山田太郎です。

    となっており、

    ”みなさん、”と、”こんにちは、”の間は

    改行されておらず、

    ”わたしは”と”山田太郎です”は、

    改行されていました。

    そして、公開ページから、再度、同じ投稿ページの編集画面に戻って、
    HTMLモードを見てみると、

    みなさん、
    こんにちは、
     
    わたしは
     
    山田太郎です。

    となっており、”わたしは”と”山田太郎です。”の間の
     が1つ減っていました。

    以上から、2回以上改行したら、公開ページ上で改行されている
    ことがわかりました。

    教えていただいたコードは正常に機能しているということでしょうか。

    私自身、WordPressの基本的な改行の特性をしっかり理解していないのですが、
    ビジュアルモードで、一回だけ改行しても、公開ページでは
    改行されないのでは正常なのでしょうか。

    そうである場合、寄稿者ユーザーに投稿してもらう場合、
    公開ページ上で改行したい場合は、

    2回以上、ビジュアルモード上で改行してもらうようにしてもらわないと
    いけないということでしょうか。

    お手数ですが、ご教示いただければ幸甚です。

    トピック投稿者 satochan

    (@satochan)

    なぜか、&nbsp; の表記が上記の投稿で消えてしまいました。。

    空欄になっているところは、&nbsp;が入っています。

    みなさん、
    こんにちは、
    &nbsp;
    わたしは
    &nbsp;
    &nbsp;
    山田太郎です。

    みなさん、
    こんにちは、
    &nbsp;
    わたしは
    &nbsp;
    山田太郎です。

    nobita

    (@nobita)

    こんにちは、

    2回以上、ビジュアルモード上で改行してもらうようにしてもらわないと
    いけないということでしょうか。

    スクリプトを使わない状態のビジュアルモードでは、改行を1回することで、一つの段落を形成します(shift+ enterは、段落内改行を形成します)
    複数改行を行った場合、2個目の改行以降は、&nbsp;に置換されます。
    また、連続する<br />も、一つに除去されたと思います。

    Force Break2は、この、&nbsp;の数を数えて、投稿を保存する時に、br要素に、置換します。

    ”みなさん、”と、”こんにちは、”の間は

    改行されておらず、

    ”わたしは”と”山田太郎です”は、

    改行されていました。

    本来、ビジュアルモードでは、改行一回で、段落が形成されるのに、なぜ、Force Break2を使うと、改行されなくなってしまうのか、

    ”みなさん、”と”こんにちは、”がなぜ改行されなくなったのか

    <p>みなさん、</p>
    <p>こんにちは、</p>
    <br style="line-height:1.5" />
    <p>わたしは</p>
    <br style="line-height:3" />
    <p>山田太郎です。</p>

    上記のような、ソースを想定していて、WordPressのwpautopという関数が、適切に段落を構成してくれるように、nbsp2br()の、returnの所に、改行を二つ追加しています

    ソースで、みなさん こんにちはが、pタグで囲まれているか、そうなっていないか、教えていただけますか?

    テーマが、まったく改行しないという問題の一つの要因に、テーマファイルが、pタグで囲む機能を、とめている可能性もあります。

    nobita

    (@nobita)

    ご利用のテーマの、functions.phpに

    以下の ‘wpautop’ という文字列があるかどうか教えてください

    remove_filter('the_content','wpautop');

    但し、これ以外の書き方も出来るので 文字列だけ検索して、その行を書き込んでください

    なければ、「なし」だけで、かまいませんので、書き込みお願いします。

    トピック投稿者 satochan

    (@satochan)

    ありがとうございます。
    とても理解が進みました。

    pタグについて、HTMLモードで見てみました。

    みなさん、
    こんにちは、
    <br style=”line-height:1.5″ />
    わたしは
    <br style=”line-height:3″ />
    山田太郎です。

    となっており、pタグが存在していませんでした。

    ‘wpautop’とい文字列について、

    Functions.phpのソースを、すべてワードファイルにコピペして、
    検索してみましたが、存在しませんでした。

    また、remove_filter という文字列は存在しませんでした。

    _filterで検索かけたところ、以下のコードがひっかかりました。

    add_filter( ‘wp_insert_post_data’ , ‘filter_handler’ , ‘99999’)

    add_filter(‘the_content_more_link’, ‘remove_more_jump_link’)

    $class_names = join( ‘ ‘, apply_filters( ‘nav_menu_css_class’, array_filter( $classes ), $item ) );

    $args->link_before .$prepend.apply_filters( ‘the_title’, $item->title, $item->ID ).$append;

    $output .= apply_filters( ‘walker_nav_menu_start_el’, $item_output,

    $list_args = apply_filters( ‘wp_page_menu_args’, $list_args );

    apply_filters( ‘wp_list_pages_excludes’, $exclude_array ) );

    以上、何卒よろしくお願いします。

    nobita

    (@nobita)

    pタグについて、HTMLモードで見てみました。

    みなさん、
    こんにちは、
    <br style=”line-height:1.5″ />
    わたしは
    <br style=”line-height:3″ />
    山田太郎です。

    となっており、pタグが存在していませんでした。

    pタグが表示されるのは、実際に表示したブログのhtmlソースで確認する必要があります。

    もし、「みなさん」がp要素で囲まれていない場合は、

    functions.phpに

    add_filter('the_content','wpautop');

    を追加して、pタグが追加されるかどうか確認してください。

    P要素がうまく追加できた時には、テーマ制作会社に、フィルタを追加して問題になる事はないかどうか、確認してください。

    P要素が追加できない場合は、なぜ、動作しないのか、テーマ制作会社に、理由を尋ねてみてください。

    トピック投稿者 satochan

    (@satochan)

    ありがとうございます。

    Functions.phpの先頭に以下のように 
    add_filter(‘the_content’,’wpautop’);
    を追加しました。

    あと、初歩的な質問ですみませんが、

    実際に表示したブログのhtmlソースで確認する
    とありますが、

    どのような手順を踏めば確認することができるのでしょうか。
    (今までそれを見たことがないため、すみませんが
    ご教示のほどよろしくお願いいたします)

    <?php
    /*
    Script Name: Force Break2
    Author: Tenman
    Author URI: http://www.tenman.info/
    Version: 0.1
    License: GNU General Public License v2 or later
    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    */
    add_filter( 'wp_insert_post_data' , 'filter_handler' , '99999');
    add_filter('the_content','wpautop');
    
    function filter_handler( $data){
    
    $pattern = '/(&nbsp;(\s)*)+/';
    $data['post_content'] = preg_replace_callback(
                $pattern,
                "nbsp2br",
                $data['post_content']);
      return $data;
    }
    
    function nbsp2br($matches){
    	$count = substr_count( $matches[0], '&nbsp;' );
    	return '<br style="line-height:'.$count * 1.5.'" />'."\n\n" ;
    }
    nobita

    (@nobita)

    連続した改行を付けた投稿を 保存します

    投稿を表示というリンクが、黄色いボックスの中に表示されるので、クリックして表示

    投稿が表示されたら、右クリックして「ソースを表示」をクリックします。

    連続した投稿のところを見つけて、その部分をここに書き込んでください。

    トピック投稿者 satochan

    (@satochan)

    ありがとうございます。
    以下のようになっていました。

    <div class="post clearfix">
    
    みなさん
    
    こんにちは!
    
    <br style="line-height:1.5" />
    
    わたしは
    
    <br style="line-height:3" />
    
    山田太郎です<p>No related posts.</p></div><!-- /.clearfix -->
    nobita

    (@nobita)

    やはり、P要素を何らかの理由で、外しているようです。

    今のテーマに無理やり対応すると、wpautop関数を付け直すか、改行をbrに置換するフィルタを使うという事になると思います。

    どちらがいいか、影響などはテーマがないので判断できません

    add_filter('the_content','wpautop');

    の一行を外して、以下を追加してみてください。

    問題が出るようなら returnのコメントアウトを入れ替えて試してみてください。

    add_filter( 'the_content', 'add_paragraph' , '99999' );
    
    function add_paragraph( $content ){
    //したのどちらかを使うと、いいかも
    	//return str_replace( PHP_EOL.PHP_EOL, '<br />', $content );
    	return wpautop( $content );
    }

    以上で、改行一回でも、何らかの形で、改行でき、2回以上改行を続けると、それなりの行間になると思います。

15件の返信を表示中 - 1 - 15件目 (全24件中)
  • トピック「ビジュアルモードで記事を書くと全く改行されないテーマについて」には新たに返信することはできません。