当社経験上、ワードプレス運用の初心者の時に触るとサイトが壊れる可能性が高い所や、触り方について解説いたします。

ワードプレスで最もよくある、触った後にサイトの表示が壊れてしまう個所とは?

ワードプレスは様々な種類のファイルで構成されています。

・PHPプログラム
・スタイルシート(CSS)
・JAVASCRIPT
・JSON
・画像

その中でも、ワードプレスサイトの描画時にプログラムとして実行されるPHPファイルを編集して、ミスをしてしまうとサイトの表示が真っ白になる(多くの場合PHPプログラムが実行継続できない致命的なエラーが裏側で出ています)ような障害がサイトに起こる可能性が高いファイルとなります。

このPHPファイルの中でも、様々なTIPSで紹介されているテーマのfunctions.phpという機能追加用のファイルの編集・修正がサイトエラーを引き起こすことが多いです。

テーマのfunctions.phpを修正する場合の心得

テーマのfunctions.phpは、ワードプレスが実行されるサイトに必ず読み込まれ、その中のコードが実行される為、様々な機能を独自に追加する際によく使用されます。

ただ、PHPプログラムであるという性質上、場合によっては1文字の空白文字がエラーを引き起こしてしまう事がある為、PHPプログラムやワードプレスの構造の知識が浅い場合は編集や修正には慎重を期すことをお勧めいたします。

1 functions.phpを修正する場合は、最悪の場合を想定してバックアップを取っておいたほうが良いです。

テーマファイルの編集画面から編集する前に、そのコードをコピペしてテキストエディターでローカルPCに編集前のファイルを保存しておきます。もしくはFTPソフトウェア等で修正したfunctions.phpをアップロードする前にfunctions.phpの古いバージョンをダウンロードして保存しておきます。

2 PHPプログラムの基本的な書式を把握しておきます

PHPプログラムの基本的な書式は下記のようになっています。

・<?php ~ ?>と挟まれている間がPHPプログラムです。ファイルの末端の?>は省略されている場合もありますがそれでも問題なく動作します(PHPタグは半角で記載します)

・<?php ~ ?>のタグは入れ子にはできません

<?php 
コード
<?php

等閉じられていないのにPHPタグが複数回始まるとエラーになります。

・$で始まる部分は変数(任意の数値の入れ物)と呼ばれ、変数は必ず接頭に$が無いといけません($のない変数を作るとエラーが出ます)

・コードは;セミコロンで1処理単位を表します。セミコロンのつけ忘れでエラーが出ることがございます。

代表的なPHPエラー

Undefined variable
Undefined index
Fatal error

・全角の空白文字が唐突に挿入されてしまっていないかや、<?phpのタグの間に何らかの文字が無いか注意します

全角の空白文字がどこかに交じっているとエラーが出る場合が多いです。
また、下記のような<?phpの前に特に理由もなく文字列が差し挟まれているコードはfunctions.phpが実行されるたびに(ページが描画される度)に実行され、<?phpタグの間の文字列が出力されサイトに全頁に不正な文字列が表示されるようになってしまう場合が多いです。

<?PHP
コード
?>
何らかの文字←この部分は文字列として解釈され全頁に出力されてしまいます!
<?PHP

・末端の?> の後にある文字列も文字列として出力されます。

?>
全角空白

のようなプログラムがあると、ワードプレスの背後の通信にこの文字列が紛れ込んでしまい、投稿が保存できない、ログインできないなどの不具合を引き起こすことがございます。

3 同じ関数名が2つ以上あるとエラーが出ます

ワードプレス全体で、同じ関数名(処理の塊の事です)が2つ以上あるとCannot redeclare function エラーが出ます。
様々なサイトのTIPSを参考に、関数をどんどん追加しているとその関数自体に問題はないのに、知らず知らずのうちに同じ名称の関数を作ってしまいエラーになる場合が多いです。

function my_func() {
//処理
}
function my_func() {
//処理
}//← エラーになります

安全策:何をどう修正したかのコメントを記載しておいた方が良いです

PHPプログラムで行頭が//になっていたり/* */で挟まれている部分はコメントと呼ばれ、プログラム上は実行されないものです。
後から何らかのエラーや不具合を引き起こしたときに、どのコードがいつ何のために記載されたかをコメントで記載しておくことをお勧めいたします。

/*管理画面のメニューを一部隠すために追加 XXX年YY日*/
function hide_admin_menus() {
    remove_menu_page('edit.php');
...

ご参考になりましたら幸いです。

WordPress ワードプレスのfunctions.phpの修正やPHPコーディングを経験豊かな専門家が代行いたします。お気軽にWPドクターまでご依頼・ご相談お送りください