WordPressでクォーテーションマークが全角になってしまう件2011-12-22
先の記事に記載したPHPのコードは、ちゃんと動いたプログラムをコピペしたものですが、それを更にコピペして別のページでプログラムを動かそうとすると、何故か上手くいきません(^^;
よく見ると、どうも「’」(シングルクォーテーションマーク)とか「,」(カンマ)が元のものと違っています。これはWordPressに投稿⇛表示した過程で、書き換えられたと言うことでしょう。さてはTiny-MCEの仕業か?
ネットで検索すると、WordPressがシングル及びダブルクォーテーションマークを勝手に全角にしてしまうそうです。そう言えば、人のサイトからコードをコピペして、クォーテーションマークがおかしかった事がありました。
対策はというと、wp-includesフォルダ内のformatting.phpというファイルの中に
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
という一文があるので、それをコメントアウトして無効化する、と言うことらしいです。⇛参考サイト
この文はもしかして、サニタイズ関連?本来はイジらない方が良いのかも知れませんが、皆定番パッチのようにやってるのでまあいいかと(^^・・・結果は半角のクォーテーションのまま、原文通り表示されるようになりました。
という訳で、既に当ブログからコードをコピペした方は、修正をお願いします。もう気づいて直してるかも知れませんが。
おまけ
ここからは余談というか、僕の失敗談を・・・
僕が最初に見たメージには、問題の文が69行目にあると書いてあり、自分のローカルファイルを見ると確かにそこにあったので、コメントアウトしてアップロードしました。
すると何と、エラーが出てサイトが表示されなくなってしまいました!慌てて元に戻して、再びアップしましたが治りません(ToT エラーメッセージで問題発生箇所が表示されますが、チェックするとそんな行は無い!(そんなに多くない)
ここまで書けば、賢明な読者なら何が起きたかピンとくるでしょう。そう、僕はローカルにあった古いファイルをアップロードしてしまったのです。
WordPressの便利な機能として、管理画面でシステムの自動アップデートが出来ます。それで僕は最新のWordPress3.3までアップデートしていたのですが、ローカルにあるファイルはヴァージョン2.xで止まっていたのです!だからコメントアウト部分の問題じゃなく、ファイルの内容が全然違うと。
そこで、WordPressのサイトから最新のシステムをダウンロードし、formatting.phpファイルを抜き出してサーバーにアップしました。これで目出度く元通りという訳です。今回はこれで済みましたが、もしこれが設定変更で書き換わるようなファイルだったら、新品をアップしても元には戻りませんからね。
因みに、問題の一文の何行目にあるかは、WordPressのバージョンによって違います。上述の参考ページにちゃんと書いてあります⇓
WP2.6は34行目
WP2.7は60行目
WP2.8は69行目
WP2.9は82行目
WP3.3は87行目
もし最初にこれを見ていたら、おかしいと気づいたかも知れませんが・・・
教訓としては自動アップデートは便利ですが、ローカルからのアップロードはNGと言うことですね。逆に全部ダウンロードしておくべきなんでしょうが、ファイルの量が多すぎて途中で止まりそう・・・