先日、遊びで作ったVBScriptを当ブログサイトに載せてみました。
検証環境:Wordpress 5.7
掲載したVBScriptの中身は小学生でもできるくらい簡単なもので、『VBscriptとはなんぞや』という初心者の方向けに書いたもの
コマンドを並べただけのものだったので、『コピペできます』と明記していたのですが、後日、自分でブログからコマンドをコピペし試しに実行してみるとエラーになってしまいました。
エラー内容
WordPressのブログサイトに載せたvbsの中身をそのままローカルにコピーして実行するとエラーになってしまう原因はなぜだろう?
と不思議だったので対処方法を調べたのでご紹介します。
自動変換される原因
WordPressに投稿した自分のWebページからローカルのテキストエディタにコピペ(コピー&ペースト)すると、ローカルのエディタに張り付けた時に、半角のダブルコーテーションが全角に変換されていることが分かりました。
調べてみると、WordPressの内部で使用されているwptexturizeという関数に自動変換されてしまう原因がありました。
wptexturize関数って何だろうって話になりますが、この関数はWordPressのバージョン0.71からWordPressに埋め込まれるようになった関数らしく(2021年現在のWordPressのバージョンは5.7なので、相当以前から組み込まれている関数のようですね。)
この関数が何をしているかと言うと以下のHTMLタグに囲まれた文字コード以外の特定の記号の並びをアポストロフィ、ダッシュ、省略符号(…)、商標記号、乗算記号などへ自動変換するものらしいです。
以下のHTMLタグに囲まれたテキストは自動変換から除外されるみたい
<pre>, <code>, <kbd>, <style>, <script>, <tt>
wptexturize関数による自動変換を回避する方法
WordPressで使用しているテーマのfunction.phpに以下の記述を追記することで、wptexturize関数による自動変換機能を停止することができます。
add_filter( 'run_wptexturize', '__return_false' );
1.WordPressの管理メニューから、[外観]-[テーマエディター]を選択
2.[テーマファイル]の一覧から[テーマのための関数(function.php)]を選択。
3.編集が終わったら、[ファイルを更新]ボタンを押下して完了。
WordPress関数の記述が1字誤っているだけでWordpressのWebサイトが表示されなくなったり、管理画面が表示できなくなる可能性があります。
私はfunction.phpに上記のWordpress関数を一行追記することで自動変換を抑止する対処を行いました。
無事に自動変換されなくなったので、wptexturize関数による自動変換を抑止したい場合は試してみてください。
他の方法としては、プラグインでwptexturize関数による自動変換を抑止することもできるようです。
Disable wptexturize
wptexturize関数による自動変換を抑止できるプラグインは「Disable wptexturize」そのまんまのネーミングですね。
プラグインは試していないので、function.phpの編集に不安がある方はプラグインを試してみてください。
この記事のまとめ
コマンドを紹介したりする技術ブログを書いている方にはwptexturize関数による自動変換は致命的だと思います。
function.phpの編集かプラグインで自動変換を簡単に抑止できるのでぜひ試してみてください。
コメント