Wordpressの自動変換機能の停止の仕方いろいろ(& → & 変換など)

公開日| 2012年9月18日   更新日| 2012年9月18日   4 個のコメントがあります。

今回は、Wordpressの自動変換機能の対処についてです。

デフォルトの設定では、Wordpressの自動変換機能が動作します。
有名なところで、ダッシュの変換、引用符の変換などがあります。

今回は、この変換処理を停止する方法について簡単に解説してみます。

自動変換がどこで実施されているか

まずは、先のダッシュや引用符の文字列変換がどこで行われているか知っておく必要があります。
Wordpressにて提供される2つの関数で自動変換は実施されています。その2つの関数で主にどのような変換が実行されているか以下にまとめてみました。
(以下のいずれも ./wp-includes/formatting.php 内にあります。)

  • wptexturize

    主な変換処理

    • 引用符
    • アポストロフィ
    • ダッシュ
    • 楕円
    • 商標記号
    • 乗算記号
    • アンパーサンド

    とたくさんあります。また、以下のタグ内は、変換されません。

    • preタグ
    • codeタグ
    • kbdタグ
    • styleタグ
    • scriptタグ
    • ttタグ

  • convert_chars

    主な変換処理

    • brタグ

      <br> → <br />

    • hrタグ

      <hr> → <hr />

    • アンパーサンド

      & → &#038;

    また、以下のタグは除去されます。

    • titleタグ
    • categoryタグ

    XHTMLに準拠した形式に変換されます。
    また、Unicode文字は有効な範囲に変換されます。



自動変換を停止するには

先の文字列の自動変換を停止するには、テーマ内のfunctions.php に以下ように追加すると変換しなくなります。

remove_filter('the_content', 'wptexturize');	//	wptexturizeによる文字列変換をしない
remove_filter('the_content', 'convert_chars');	//	convert_charsによる文字列変換をしない

上記は、あくまで 主要記事(‘the_content’) のみに対応しています。
タイトル(‘the_title’) や 抜粋記事(‘the_excerpt’) 、コメント欄(‘comment_text’)にも対応したい場合は、以下のように記載すると良いでしょう。

remove_filter('the_content', 'wpautop');	//	自動形成しない
remove_filter('the_content', 'wptexturize');	//	wptexturizeによる文字列変換をしない
remove_filter('the_title'  , 'wptexturize');		//	タイトル
remove_filter('the_excerpt', 'wptexturize');		//	抜粋
remove_filter('comment_text', 'wptexturize');		//	コメント
remove_filter('the_content', 'convert_chars');	//	convert_charsによる文字列変換をしない
remove_filter('the_title'  , 'convert_chars');		//	タイトル
remove_filter('the_excerpt', 'convert_chars');		//	抜粋
remove_filter('comment_text', 'convert_chars');		//	コメント
全てを停止すれば、確かに自動変換は全てで停止します。が、それで良いかどうかは、よくよく考えた方が良いでしょう。 Wordpress のバージョンアップやメンテナンスを考えると できる限り自動変換を停止する範囲は狭くした方が良いでしょう。

また、& ( アンパーサンド ) だけは、なぜか両方( wptexturize, convert_chars )で変換が実施されているので、&の変換を止めたいときは、両方を停止( remove_filter ) しないといけません。 &だけを自動変換を止めることは、Wordpressの本体のソースコードを変更すればOKですが、そうでない限りは、難しいでしょう。
そうであれば、むしろ自動変換させて、さらに変換させるのも悪くないかもしれません。
例えば、テーマの中の functions.php に以下のようなコードを記述することでもうまくいくでしょう。
function my_replace_amp($content) {
	return str_replace('&#038;', '&', $content);
}
 
add_filter('the_content', 'my_replace_amp');
と非常に簡単ですが、これでもできます。一律、&#038;&のみに変換をしているだけですけどね。

編集した内容を一部分だけ そのままを出力するようなプラグインもあります。ただ、自動整形しないように以下のコードなどを含んでいても全て自動整形されてしまうような問題を含んでいるので注意が必要です。
remove_filter('the_content', 'wpautop');	//	自動整形しない

編集した内容を一部分だけ そのままを出力するようなプラグイン
  • WP-No-Format (キーを埋め込みその範囲を変換しないプラグイン)
  • Raw HTML (キーを埋め込みその範囲を変換しないプラグイン)
  • wpuntexturize (これが上記と同じように再変換するプラグイン)
上記のプラグインは、ご参考までに。


コメント

4 件 口コミ・評判があります。 口コミ・評判を投稿する
  1. […] 「& → &」に置換しなおしてるだけですね。 参考: ・WordPressの自動変換機能の停止の仕方いろいろ(& → & 変換など) : WordPre… ・WordPress › フォーラム » […]

  2. […] こちらの記事を参考にさせていただきました […]

  3. […] これを「functions.php」に記述するだけで解決!(このページ参照⇒WordPressの自動変換機能の停止の仕方いろいろ) […]

口コミ・評判を投稿 :

ブラウザの JavaScriptが無効となっている場合、コメントの投稿はできません。
コメントを投稿するには、JavaScriptを有効にしてください

お名前 *

メールアドレス *
(口コミ・評判欄には、表示されませんが入力が必要です。)

サイトアドレス



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ