WordPressで本文中のURLに余計な改行が入らないようにする
PingのURLリストを書こう思っただけなんだけど…滅茶苦茶ハマった( `_ゝ´)ムッ
URLリストを投稿すると、変な改行が入っちゃって消えない。
ダッシュボードでこうやって記述
http://bbb.bbb.co.jp/
http://cccc.ccc.jp/ccc
そうすると表示はこうなる
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://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 />
その、余計な空白行は一体何???
何でこんな風になるのか未だにワカリマセン。
が、治し方は判りました。
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
参考になりました
ブラウザがpostする時のtextareaのバグかと勘ぐってしまいました
私も3日以上じゃないですけどすっかりハマってたところです。
治し方で書いてらっしゃったwp-includes\media.php 1280行目付近ですが、
4.1.1には該当箇所がなくて、探したらwp-includes\class-wp-embed.php の330行目でした。
めっっっっちゃ助かりました!!
ありがとうございます!!!