ご存知のように、現在のCLASSICUSのWebサイトはWordPressで作られおり、ショッピングカート機能はwelcartという、標準機能は無料のWordPress用EC(eコマースの略らしい)
WordPressというのは非常に簡単かつ強力なCMS(Contents Management Systemつまりコンテンツ管理システム。次々と現れる略称の数々、まったくついていけません)
さてこのWordPress、テーマやらプラグインを選び、ちょっとしたデザインや遊びをCSS(カスケード・スタイル・シート、要はhtmlの装飾要素のようなものです)
詳しくは他所へ譲るとして、WordPressはPHPという言語で書かれており、このPHPをカスタマイズすることによって、Web上で可能なことはほとんど何でも実現できてしまう、ある意味禁断の果実といえます。
CLASSICUSのWebページも、特にwelcartを独自の仕様で表示させたかったためもあってPHPをカスタマイズしているのですが(ただし、このPHPカスタマイズも、最近のWordPressは子テーマをカスタマイズすることによって、テーマの基幹部分を壊したり、更新によってカスタマイズが消去されるというようなことが防止されるようになっています)
最も多いエラーは単純な文法エラーです。括弧が対になっていなかったり、関数の綴り間違いなど、ごく簡単かつ見落としがちなこのようなエラーによって、いきなりWebページが表示されなくなってしまうため、初めて出くわした時には慌てふためいてしまいます。また、エラーの種類は千差万別ですから、気がつくときにはすぐに気がつくのですが、単純であればあるほど見つからなかったりするものです。
*
ようやく本題です。 商品の並べ替え方法を見直そうと、久々にPHPをカスタマイズ(ややこしく表現すれば、function.phpの並べ替えフックの変更)
こうなってしまうと、WordPress自体が動作を止めてしまうため、FTPからファイルをアップロードして復旧を行うより他なくなってしまいます。ところが、FTPで変更した部分を元に戻してもWordPressは動作せず、いささか慌ててしまいました。
ひとしきり検索をして、色々な事例を眺めて思案したところで、手始めにfunction.phpを消去してみますと、何事もなかったように復旧してしまいました(function.phpは親テーマにもあるため、子テーマのものが消えても大きな問題とはなりません)
これで、エラーはカスタマイズした中にあることが分かりました。しかし、何度見直し、似たような部分と比較しても、エラーらしきものは見つけられず、コメントアウトを外した途端に「Error 500」となってしまいます。
あちらを消しこちらを直し何度試してみても「Error 500」から逃れることが出来ず諦めかけたところで突然閃き、テキストエディターにペーストしたfunction.phpに半角文字検索をかけてみたところ、半角スペースであるはずの部分に謎の空白が挟まっていることが判明しました(キャプチャ写真参照)
この謎スペースの文字コードは「00A0」で、これは「ノーブレークスペース」というものらしく、手打ちhtml世代は良くお世話になった「 」と同じもののようです。アルファベットや括弧などの半角と全角の間違いはチェックしていたのですが、まさかスペース部分にこのような罠が潜んでいようとは思いもよりませんでした。一体このようなものがいつどこで混入したのか、謎は残ったままですが。
レアケースとは思いますが、構文上問題が無いのにPHPの動作がおかしい場合にはスペースや改行などに怪しい文字コードが潜んでいないかチェックしてみても良いかもしれません。