WordPress

WordPress で “(ダブル・クォーテーション)や’(シングル・クォーテーション)が自動的に全角になってしまう

2009年10月3日

自分のブログに書いたソースコードをコピペしたら使えなかった。
どうやら"(ダブル・クォーテーション)と'(シングル・クォーテーション)が、記事を投稿すると全角になってしまうようだ。

formatting.php を修正

Webを検索するとたくさんの先人の皆さんがいらっしゃったが、WordPress 2.8.4 でもこの仕様は同じだった。
WordPress 2.8.4 では、wp-includes ディレクトリにある formatting.php の70行目にある、preg_replace の行をコメントアウト

 

if ( !empty($curl) && '<' != $curl{0} && '[' != $curl{0}
&& empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack)) { // If it's not a tag
// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
//  $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
} else {

preg_replace は、PHP の関数で、 $curl の中身を検索して、$dynamic_characters 正規表現に一致するものを、 $dynamic_replacements  に置き換えている。

【preg_replace】 http://cai.cs.shinshu-u.ac.jp/sugsi/Lecture/php/manual/function.preg-replace.html

この部分の変数は、WordPress 2.8.4 では formatting.php の58~60行目に記述があった。 array 定義されている。

image

実際には、ダブル・クォーテーションやシングル・クォーテーション以外にも幾つかの文字を置き換えている。
正規表現を管理人の知識では読むと時間がかかりそうなので、とりあえず単にコメントアウトして様子見。。

過去の記事について

これは表示される時の問題なので、過去の "(ダブル・クォーテーション)や、'(シングル・クォーテーション)を使った記事は、上記の対策をするたけで、元の半角文字に戻る。
昔の記事を再編集する必要は無かった。

WordPress をアップデートする度に修正が必要

この操作は、WordPress の大元のファイルをいじるので、WordPress をアップデートすると、元に戻ってしまう。
久々に検索すると wp-includes/formatting.php 以外に、wp-includes/functions.php 側で修正する方法もあるようだが、恐らくそちらも WordPress のアップデートの度に変更しなければいけないのは同じだと思われる。

WordPress 2.9 / 3.1 での追記

WordPress 2.9 / 3.1 では、formatting.php のコメントアウト対象の preg_replace の行は、86行目でした。

if ( !empty($curl) && '<' != $curl{0} && '[' != $curl{0}
&& empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack)) {
// This is not a tag, nor is the texturization disabled
// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
// $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
} elseif (!empty($curl)) {

-WordPress

Copyright© エンジニアの何でもメモ帳 , 2024 All Rights Reserved.