WordPressで本文中のURLに余計な改行が入らないようにする

By , 2012/01/10 00:10

 

PingのURLリストを書こう思っただけなんだけど…滅茶苦茶ハマった( `_ゝ´)ムッ

URLリストを投稿すると、変な改行が入っちゃって消えない

 


ダッシュボードでこうやって記述

http://www.aaaa.net/aaa/aaa

http://bbb.bbb.co.jp/

http://cccc.ccc.jp/ccc

 

そうすると表示はこうなる

http://www.aaaa.net/aaa/aaa

http://bbb.bbb.co.jp/

http://cccc.ccc.jp/ccc

…(‘A`)ナンデ??

 

DBのデータを確認しても改行入ってないよ??
そのまま出せよヽ(`Д´)ノプンプン

 

HTMLソースを見ると、各行に<br />が3つ入ってる。orz

酷いのがテキストエリア内にリストを表示させても<br>つけたままで出てくるんだ。
preでも一緒。なんじゃそら。そんなタグ書いてないし。

 

でもなぜか、URLの冒頭に半角スペース以外の一文字をつけると改行されない

 

まあ、<br />がつくのは「brBrbr」っていうプラグインを入れてるからだと思ってOFF
※「brBrbr」は、p を br に変更するプラグイン

 

そしたらURLが各行ごとに<p>で囲まれてる事が判明。

あーWordPressが勝手に改行してくれてるわけね。

 

じゃあ、って事で、勝手に改行を防ぐ「Disable wpautop」を導入。
参考:ワードプレス(WordPress)が勝手に挿入する<p>タグを消す方法。

 

めでたしめでたし、余計な改行が消えたね。これで治った!!

 

…と、思ったよ。
思ったけど根本的に治ってなかったんだorz

 

改行用のHTMLのタグは消えたんだけど、改行自体はのこったままだった。
要するに pre で囲ったり、textarea に表示させたりしても、このままなんだ…

http://www.aaaa.net/aaa/aaa

http://bbb.bbb.co.jp/

http://cccc.ccc.jp/ccc

(゚Д゚)ハァ?

 

要するにこういう事。

http://www.aaaa.net/aaa/aaa<br />
<br />
http://bbb.bbb.co.jp/<br />
<br />
http://cccc.ccc.jp/ccc<br />
<br />

その、余計な空白行は一体何???

 

何でこんな風になるのか未だにワカリマセン。
が、治し方は判りました。

●治し方wp-includes\media.php 1280行目付近
autoembed_callback 関数内の以下の箇所が、改行で囲まれているのでトルツメ
return "\n$return\n";

こんなカンジに書き換える。

return "$return";

で、やってみたらウマくいった(謎)

 

念のためこんな風にしてみた。

function autoembed_callback( $match ) {
$oldval = $this->linkifunknown;
$this->linkifunknown = false;
$return = $this->shortcode( array(), $match[1] );
$this->linkifunknown = $oldval;
//★★ 前後の空白を削除
//        return "\n$return\n";
return "$return";
}

この関数がなぜこのようになっているか、調べても情報がないので不明。
これで治っちゃったので「brBrbr」と「Disable wpautop」の2つのプラグインは解除。

ただし、全く理解せずに書いているので、他に影響がでるかも??
変な風になっても責任負いませんので念のため。

自分は今のところ問題ナシ。

 

はー( ´Д`)=3…疲れた。
ココまで3日以上掛かってるよorz

2 Responses to “WordPressで本文中のURLに余計な改行が入らないようにする”

  1. ef より:

    参考になりました
    ブラウザがpostする時のtextareaのバグかと勘ぐってしまいました

  2. さふ より:

    私も3日以上じゃないですけどすっかりハマってたところです。

    治し方で書いてらっしゃったwp-includes\media.php 1280行目付近ですが、
    4.1.1には該当箇所がなくて、探したらwp-includes\class-wp-embed.php の330行目でした。

    めっっっっちゃ助かりました!!
    ありがとうございます!!!

Leave a Reply

Panorama Theme by Themocracy