WordPress の投稿データ処理

WordPress は、投稿編集画面へ入力されたテキストを何回か処理してから、最終的に WordPress ブログの Web ページに表示します。このテキスト処理は不要なコードを取り除き、テキストをブラウザーが解釈できる形式に調整します。WordPress の投稿コンテンツのフィルタリングの詳細について注意を払わなかったりよく知らなかったりすると、この処理によって望まない変更が起きることがあります。

変換とフィルターの大部分は wp-includes/formatting.php の中にあります。

これらのフィルタリングと処理について一部のユーザーが経験する典型的な問題には、例えば以下のようなものがあります。

  1. 保存した際に空の段落 (P)、閉じ span タグ、改行 (BR) 要素が削除される。
  2. 要素から class が削除される。
  3. DIV 要素が P 要素へ変換される。
  4. JavaScript とコードが、実行可能なコードではなく表示可能なコードへ変換される。JavaScript をブログ投稿へ組み込む方法については Using Javascript をご覧ください。

この先は、WordPress が最終版を表示する前に投稿コンテンツのテキストをどのように処理するかを示した、段階的なリストです。

ビジュアルエディター

WordPress ブロガーの全員がビジュアルエディターを使うわけではありませんが、使った場合、保存する際に様々なコードを変換して投稿エントリーの公開に備えます。

wpautop() WordPress 関数

wpautop() は WordPress のコア関数で、投稿のテキストを自動的に処理し、修正し、変更します。

改行や段落タグを挿入し、 開き閉じが対になっていないタグ を修正し、重複した HTML タグを消去します。

テクスチャライズ

テクスチャライズ (wptexturize() 関数) はデフォルトで有効化されているテキスト用フィルターで、投稿されたテキストやコメントが読みやすく美しい表示になるように変更します。

これによって見た目が美しいテキストを表示できるようになる一方で、プログラミング言語のコード例を投稿するときに困ったことになるかもしれません。そのような場合、文法的に間違ったコードを作りかねないので、テキストの変更は望ましくありません。

例は以下のとおりです。

"quoted text" → “quoted text”
'quoted text' → ‘quoted text’
          --- → —
           -- → –
          ... → …
          (c) → ©
          (r) → ®
         (tm) → ™
           '' → ”
           `` → “
  president's → president’s
  presidents' → presidents’
          12' → 12′
          12" → 12″
          2x4 → 2×4

スマイリーの変換

convert_smilies() 関数は、投稿・固定ページ・コメント文の中にある組み合わせ文字をスマイリーや絵文字へ変換します。例えば、スマイリー機能が有効になっていると、WordPress は「:」と「D」の組み合わせ (:D) を認識して笑顔の絵文字 ( 😀 ) へ変換します。

スマイリーを動作させるには組み合わせ文字の前後に半角スペースを入れるのが重要です。他のテキストとくっついている場合は変換されません。

もしスマイリーの変換が不要なら、「設定 → 投稿設定」で無効化してください。

文字の変換

formatting.php コードファイルの中には、文字実体参照・アクセント・英語以外の文字をブラウザーが認識できる形式で公開するためのヘルパー関数が数多く含まれています。

一般的にはこれらは非常によく操作しますが、ある言語がブラウザーで有効になっていない際に、ブラウザーがその言語の文字を認識できない場合があります。追加言語の文字をブラウザーに認識させる方法についての詳細は、ブラウザーのドキュメントをご覧ください。

処理を防ぐ方法

WordPress がデフォルトで使うフィルタリング処理を変更するプラグインが色々とあります。WordPress コアのプログラムを変更せず、コンテンツ処理の全部または一部を変更するプラグインを利用することを強く推奨します。投稿コンテンツのフィルタリング処理を変更するプラグインを探すには WordPress プラグイン ディレクトリ をご覧ください。

この記事は役に立ちましたか ? どうすればさらに改善できますか ?