WordPressには基本処理をまとめておくファイルであるfunction.phpと呼ばれるファイルがあります。function.phpでエラーが出てしまうと全体に影響があるので必ずテストをして本番に反映することをおすすめします。function.phpでのエラーが出た時のエラー集とそのエラーへの対応策をまとめてご紹介します。
Compilation failed
Rplayでは求人ページのルーティング処理をfunction.phpで行っています。求人ページのルーティングの実装方法は、function.phpでのpreg_matchで一致したURLに対して、特定のテンプレートを返しています。
下記のエラーは、function.phpでのpreg_matchした時に”k”という文字列を含んでいるときにコンパイルエラーしてますよというエラーです。
Compilation failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 13 in
この問題の解決方法
\k
にすると、マッチの開始位置をリセットするという正規表現になってしまうので\kurashi
などのような文字列をpreg_matchの文字列として指定したい場合は注意が必要です。
preg_matchするときの解決の一例
下記は$url
(現在見ているページのURL)をパターンマッチしたいときの例になっています。現在閲覧しているURLを取得して処理を変更したいときがありますよね。そういうときに利用するコードになっています。下記はWordPressなのでPHPで記述しています。他のプログラミング言語の場合異なる場合がありますので、注意してください。
if(preg_match('/kurashi\/(.+?)\/\w/', $url )){ // 成功 } if(preg_match('/^\/\kurashi\/(.+?)\/\w/', $url )){ // コンパイルエラー }
\K を使用すると、マッチの開始位置をリセットできます。 これは PHP 5.2.4 以降で使用可能です。たとえば、パターン foo\Kbar は “foobar” にマッチしますが、 結果は “bar” にマッチしたと報告されます。 \K を使用しても、キャプチャした部分文字列には影響を及ぼしません。 たとえば、パターン (foo)\Kbar が “foobar” にマッチしたときの最初の部分文字列は “foo” です。
PHPの正規表現の学習方法
preg_matchなどを利用する際に必要になるのが、正規表現です。正規表現を1から学習するという方もいると思いますが、何を書いているのか理解できないという方は、まずはよく使われる正規表現をみてみることをおすすめします。
・[ PHP ] 正規表現サンプル12選 ( preg_match / preg_match_all)
また、書いている正規表現が正しいのかどうかをチェックできるツールがあれば実際のコードを書いて確認する手間が省けますよね。そういうときには下記のようなチェックツールがおすすめです。
・http://okumocchi.jp/php/re.php
WordPressが学習できるスクール
WordPressをホームページ、ブログとして利用する方が多くなってきましたが、実用化していくと多くの問題に直面することになります。
●エラーが表示されたときにどうやって解決したら良いのかわからない
●解決策がわからないので、誰かに教えて欲しい
●間違って触って管理画面が見れなくなってしまった
●画面が真っ白になって見れなくなってしまった
などなど。
teratailなどのプログラミングQ&Aサービスでも、プログラミングに関する悩み・相談を聞くことができますが、回答が理解できなかったり、回答が返ってこないということもあります。
そういうときにはWordPressの学習ができるスクールがおすすめです。