このサイトへ訪問する方はそんなことで迷わないだろう..なんて勝手に想像していましたが、「気をつけろ」というだけでは、コードを紹介しているサイトの割には不親切だと感じたので、改めてテーマのfunctions.phpへより安全にコードを追加する方法をいろいろと挙げておきます。

1.基本はWordPressのテーマファイルエディターで行う

WordPressのテーマファイルエディターやプラグインファイルエディターでは、どこかのバージョン(確か4.x)から、エラーが含まれるコードを追加して保存した途端に真っ白になってしまうことを防ぐために、簡易コードチェック機能が追加されました。

このチェック機能は、結構細かいところまでチェックされるし、確実にロールバック(保存前の状態で保持)してくれるし、どこに不都合や不具合があって止まっているのかも行番号込みで示してくれるので、すごく便利ですごく助かります。

一旦ファイルをパソコンにダウンロードして加工してから上書きすることを推奨されている方もみえるようですが、結局上書きしてしまうことになること、エラーの原因が分からないこと、パソコン上で加工した時の文字コードの問題でエラーとなる(コードに問題がない)こともあることから、個人的には、テーマファイルエディターで加工することをお勧めしますし、実際に私は長年テーマファイルエディター上でのみ追記や修正をしています。

2.コードをコピペした時は一旦余分な空白は削除する

このサイトも含め、いろいろなサイトでWordPressのカスタムコードが紹介されています。中にはコピペでとなっているページもあるのですが、コピペして保存した途端にエラー(ファイル転送で行った場合には「サイトに重大な..」と表示)となった経験ありませんか?

この不具合は、コード云々ではなく、コードの前後に含まれる空白の問題であることが多いです。

そしてこの種のエラーの場合、テーマファイルエディターのエラー原因のヒントも不明瞭(コードは合っているのにエラーだと言われる)なので、どこかのページのコードをコピーしてfunctions.phpに貼り付けたら、各行の文頭や文末にある空白は一旦削除するとこの種の不具合が発生することはないでしょう。

3.コードの全角・半角に気を付ける

基本的にテーマのfunctions.phpへ追加するコードは、空白も含め、半角英数字のみが使用できます。

ただし、文字列として認識するように「’」や「”」で囲まれた部分は全角文字が使えます。

コードの紹介を行っているページのコードをコピーした時、本来半角でなければならない場所に全角文字が入っていることがあります。よくあるケースとしては以下のような場合が多いでしょう。

  • 紹介ページのコード表示機能の仕様や不具合などによるもの
  • コピーする機器の環境によるもの
  • 海外サイトを日本語に訳した状態でコードをコピーしたとき

コードをコピーしたら、まずは全角・半角のチェックを行うようにすることで、この不具合は解消できます。

4.ユーザー定義関数名の重複を防ぐ

以下のような書き方をするものをユーザー定義関数と言います。

function 〇〇〇(){
---内容---
}

この「〇〇〇」にあたる部分は、サイト内で一意(重複がない)でなければなりません。

もしも重複している場合には、保存時にエラーとなり、エラーメッセージに「Cannot redeclare ha_downloadpage_redirect()...」と表示されます。

これを回避する方法については以下のページで解説しています。

ただしこれは、エラーでストップすることを防ぐための策であり、重複していた場合には書いたコードが適用されなくなってしまいますので、確実に機能するようになったことを確認後、ユーザー定義関数名が重複していないかをチェックする(チェックを入れると機能が止まる場合は重複)ためのみに使用しましょう。

5.外部ファイルを読み込ませるときは

テーマのfunctions.phpでは「include」を使って外部のプログラムファイルを追加で読み込ませることができます。

いろいろとカスタマイズしているとコードが長くなる場合、機能別にファイルを作って読み込ませることで判別しやすくなるメリットはあります。

「include」を使って外部ファイルを読み込ませる時は、以下のようにしましょう。

  1. パソコン上でphp形式のファイルを作り、先頭に「<?php」のみを入れる(コードは記述しない)
  2. 目的の場所へファイルをアップロードする
  3. 有効化しているテーマのfunctions.phpへ「include」を使ってファイルを読み込ませる措置をする
  4. 新設したphp形式のファイルをテーマファイルエディターで開き、コードを追加して保存する

こうすることで、4の作業後に保存した際にはWordPressのコードチェック機能が働き、エラーの場合にはロールバックされます。

逆に、コードを書いたファイルをアップロード後に「include」で読み込ませるコードを追加すると、ファイル中のコードにエラーがあった場合には真っ白画面になるか、「サイトで重大な..」となりサイトがストップします。

また、外部ファイルの先頭は「<?php」ではなく、ファイルへの直接アクセスを防ぐために以下のように記述するとよいでしょう。

<?php
//このファイルへの直接アクセスを禁止
if ( !defined( 'ABSPATH' ) ) exit;