情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

WordPressの記事本文中にHTMLコメントタグを書くための設定

HTML (15) PHP (25) WordPress (76) オリジナルテーマ作成 (3)

WordPressの本文中でHTMLコメントを使用すると、勝手にコメント部分が変換されてしまい、コメントの部分より後ろがすべてコメントアウトになってしまうことがあります。これを防ぐための対策についてメモ。

問題が起こるコメントアウトの例

たとえば、次のような、「<>」を含むコメントを書くと、問題が発生してしまいます。

<!--
comment
<>
-->

これは、タグを丸ごとコメントアウトすることに相当し、広い範囲をコメントアウトするときによく該当してしまいます。

何が起こるか

問題が発生するコメントを書いてしまうと、そのコメントの部分以降、すべてがコメントアウトになってしまいます。つまり、本文途中のコメントアウトをすると、そこより後ろの本文すべてが消えてしまうのです

問題の原因

例のコメントアウトを保存して表示してみると、実際の表示の際に変換が挟まり、表示する際には、次のようなソースコードになってしまいます。

<!--
comment
<>
&#8211;>

つまり、コメントタグの閉じるためのタグが変換されてしまっているのです。これにより、コメントタグが終了しないので、問題が発生していたわけです。細かく見てみると、「ハイフン二つ」が「ハイフンの実体参照(&#8211)」に変換されてしまっています。この変換機能が原因というわけです。

良くある対策

ここから、良くある対策と、おすすめの対策を書きます。

よくあるのは、この機能を有効にしているコードをコメントアウトする方法です。具体的には、「wp-includes/default-filters.php」の

add_filter( 'the_content', 'wptexturize'        );

を、

// add_filter( 'the_content', 'wptexturize'        );

に書き換えます。これだけで、問題の原因になっていたコードの自動変換機能が停止します。ただし、この方法の場合、WordPressをアップデートすると、変更が元に戻ってしまい、再発しかねません。

おすすめの方法

おすすめの方法は、これと同じ効果のあるコードを、テーマの「functions.php」に書き加える方法です。次のようなコードを「functions.php」に書き加えてください。

remove_filter( 'the_content', 'wptexturize' );

こうすれば、WordPress本体のアップデートに巻き込まれることはありません('wptexturize'の名前が変わるなどしてしまうとさすがに駄目ですが)。こちらのほうがおすすめですし、変更がすべて「functions.php」に並ぶおかげで、管理が容易です。

まとめ

このような使う人によっては迷惑な自動変換はいろいろあるので、また紹介したいと思います。

コメント(0)

新しいコメントを投稿