WordPressが急にエラーコードを吐き出すようになった。WordPressに機能を追加しようと思って独自にコードを挿入してみてもなかなかうまくいかない。そんなことはよくあります。
WordPressのエラー修正やカスタマイズがうまくいかないときこそ、少し考え方を変えてHTMLの基本で解決するという方法もあります。
ホームページ制作では様々なWeb技術が入り乱れて駆使されていますが、クライアントの要望、初期の要件定義などの縛りによって、「その通りにやる」というのが盲点の原因となっていることはよくあります。
管理画面復旧・復元・エラー修正はこちら
確かに企画・計画通りに物事をすすめるのはスマートですが、WordPressはオープンソースという特性上、そしてWordPress本体やプラグインが常時アップデートされていく関係上、当初の想定とは異なった方法で機能を実装したりする必要が生じることがあります。
想定したフローの中で行き詰まりを感じたときでも、WordPressサイト自体の「最終的な目的」がはっきりしていると、異なる方法も案としてバンバン出てくるのではないでしょうか?
「確かあのプラグインですぐに実装することができたはずだ」
そう思って、実際にWordPressプラグインを導入してみるとエラーコードの嵐。
「…理由がわからない」
そんなことを経験された方もいるかもしれません。
こうした時は、WordPress本体自体がphp7に対応したことを受けて、サーバーのphp設定がバージョン7になっているにもかかわらず、昔から使っているプラグイン自体がphp7に対応していない、ということなんかがよくあります(その後、php 7.xから8.xに変更されました。今後もそのようなphpバージョン変更はどんどん起こります)。
サーバーのphpバージョンアップの影響によるWordPressやメールフォームのエラー
そこで今回は、そうしたWordPressのエラー修正の際やWordPressカスタマイズの際に、「WordPressの関数などなど、内側だけで何とかしようとしなくてもいいのではないか?」という旨で「WordPressのエラー修正やカスタマイズがうまくいかないときこそHTMLの基本で解決する」をお伝えしていきます。
WordPress・php・htmlの基本ルールを網羅していないと難しい
WordPressには独自に使用することのできるWordPress関数などがあり、また基本はphpで作られているため、カスタマイズや修正においてもこうした動的な仕組み自体をある程度理解しておく必要があります。
ただ、私たちも「phpの教科書を書けるほど理解しているか?」と言われれば「no」と言わざるを得ません。だからphpを極めている方などは非常に尊敬しています。
そこで、ホームページ制作においてWordPressを利用することに着目して考えると、ある一つのことをやりたい場合、ある仕組みを導入したい場合、そのカスタマイズ実装には幾多のルートが存在していることをまず確認するべきです。
京都から東京に行くにしても、昔の言い方で言えば東海道でも中山道でもいいわけで、移動手段も車や新幹線などたくさんの手段があります。最終的な到達地点が東京某所であればいいので、たどり着けるのであればどのルートでも問題はありません。
所要時間の問題で最適なルートというものはありますが、例えば、途中で「名古屋にも寄りたい」と思うのであれば東海道がベストルートです。ただそうした仕組みを作ったあとで、「やっぱり長野にも寄りたい」と思うことがあるでしょう。それが追加カスタマイズです。この時にすでに東海道自体をメインルートとしてしまっているので、「中山道」をメインルートとした場合とはカスタマイズの方法が異なってきます。
WordPressテーマ頼り・プラグイン頼り
WordPressがホームページ制作に利用されてから、いわばほとんどの仕組みをWordPressが担ってくれるため、安易にホームページ制作業務を請け負う業者が増えてきたと聞いたことがあります。
WordPressテーマを5万円で買ったからといって、ほとんどのカスタマイズを1万円で実装することはできません。なぜなら完成品の大量販売であるからテーマは低価格であるだけで、そのテーマと同じくらいのものをゼロベースで作り上げるにはテーマ価格と同じ価格で行えるはずがないからです。
PlayStation 4は、3万円台くらいで販売されていますが(初回投稿当時。その後PlayStation 5が出ましたね)、プレイステーションと同じようなものを作るのに3万円では不可能ですし、現行のPlayStation 4のハード部分をカスタマイズするのを「部分的ですから1000円でできるでしょう」と思う人もいないはずです。
本体バージョンアップやプラグイン更新によってエラーが出た場合の復旧が難しくなる
それはさておき、WordPressテーマに予め組み込まれている機能やプラグインに頼ってWordPressホームページ制作を行うと、本体バージョンアップやプラグイン更新によってエラーが出た場合の復旧やプラグインで追加した機能のさらなるカスタマイズなどは難しくなります。
急なエラーへの対応や修正、こだわったカスタマイズを実装したい時には、WordPress・php・htmlの基本ルールを網羅していないと難しい面があります。
その最大の理由は、最終的な「コードの吐き出し」に関するルートの選択をテーマやプラグインに頼っていた場合、少しの修正にも舵取りが効かない場合があるからです。
ルールに沿っていてもテーマやプラグインの仕様でぶつかる
WordPressやphp、そしてHTMLやCSSのルールに沿っていてもテーマやプラグインの仕様で競合が生まれ、設定がうまく反映されずカスタマイズがうまくいかない場合もよくあります。最悪の場合は、エラーの原因にもなります。
複数箇所に設定の記述があった場合に、どれを優先するのかということの順序を誤っていったり、競合状態に陥るということがその代表例です。
それでは、ルールに沿っていてもテーマやプラグインの仕様でぶつかるケースについて少しだけ見ていきましょう。
WordPressパラメータの指定が競合する
例えば、WordPressのパラメータを利用する場合、テーマやプラグインで、アーカイブリストの昇順(ASC)と降順(DESC)を自動で吐き出す仕様があったとします。
ちなみにWordPressはこうしたパラメータ無指定の場合、降順(DESC)です。数字の多いものから少ないものへと順番にする、つまり、単純に投稿であれば新しいものから順番に表示するというようなイメージです(ページのIDや公開日も新しいものほど数値が高くなっていますからね)。
単純にこの昇順降順を設定しただけであれば、投稿の公開日を新着順と古いもの順に変更することができます。
しかしながら、例えばカスタムフィールドの数値を基準として昇順・降順を選択して一覧表示したい場合、先にテーマやプラグインで昇順(ASC)と降順(DESC)を設定されていてしまっては、昇順と降順のどちらでリスト化するのかを強制的に設定されてしまいます。
こうした場合、根本的なアーカイブリストの昇順降順の仕組みを取り払ってカスタマイズする必要があります。
これが、せっかくWordPress関数・パラメータのルールに沿っていても、テーマやプラグインの仕様でぶつかる例の一つです。
CSSの設定が効かず、!importantも効かない
その他にも、WordPressテーマのカスタマイザー(外観→カスタマイズ)でフォントサイズの指定をした場合、CSS側で箇所に応じた細かな設定しようと思っても、カスタマイザーの設定が優先されてうまくできない場合があります。これはテーマの設定上スタイルをインラインでヘッドに吐き出し、それが外部CSSの記述よりも後になるためです。
CSSは同じ箇所の設定が複数ある場合は、記述順序によって上書きされ、また、同じ箇所の設定があると上書きされ、という仕組みで設定が決定します。
「!important」を利用することで、優先度の高さを示すことはできますが、テーマやプラグインによるHTMLへのスタイル直書きには勝てません。
こうした場合は、WordPressテーマやプラグイン自体の仕様を変更することで解決することができますが、phpとも絡み合っている部分ですのでエラーが出やすい場所であることは否めません。操作には十分注意しましょう。
phpバージョン変更に対応していない
WordPress4.7以降、現行のバージョン4.8(初回投稿当時。更新日時点ではバージョン6.6です)でもよくありがちなエラーの引き金が、「プラグインがphpバージョン変更に対応していない」という点です。
頻繁にアップデートされているWordPressプラグインであれば、php7以上に対応している場合もありますが、phpが5.6以下の時に作成されたプラグインで、アップデートされていないものはエラーの原因になることがあります。
(その後、php8系になり、多くのプラグインが動作を停止しました)
WordPressのサーバーインストール時にサーバー側でphp7以上に設定されつつ導入されたWordPressであれば、当然にWordPressはphp7で動いている場合があります。WordPress4.7になった後にインストールされたWordPressサイトの場合は、概ねサーバー会社側でphpバージョン選択が7以上になっていると考えられます。
こうしてphp7に合わせてインストールされたWordPressサイトに、php5.6までしか対応していないプラグインをインストールするとエラーが発生する場合があります(同様にphp7.4までしか対応してないプラグインは、php8以降で概ねエラーが発生します)。どうしてもそのプラグインが使いたい場合は、phpバージョンをダウングレードするというのも一つの解決策です。
WordPress 6.0~6.2の場合 php 5.6.2~8.2 推奨はphp 7.4以上
WordPress 6.4の場合 php 7.0~8.3 推奨は、php 7.4以上
サーバーのphpバージョンアップの影響によるWordPressやメールフォームのエラー
プラグインが.htaccessを上書き
その他、WordPressプラグインが.htaccessを上書きすることもあります。こうした場合はWordPressの管理画面の操作でなんとかなる問題ではなくなります。
WordPress自体を入れ直そうと思っても、「.htaccessやwp-config.phpなどのコアファイルはプラグインに上書きされてそのまま」ということはよくあります。プラグイン頼りのまま、エラーが出た場合にプラグインを停止してももとに戻らない場合は、こうした部分に問題がある場合があります。ただ非常に重要なファイルですので安易な操作は相当危険です。
HTMLという原点に帰って解決しよう
WordPressパラメータの競合やCSSの上書き、プラグインが使えない、変に設定してエラーが出るという場合、基本的なhtmlの仕組みを使って、簡単に解決するという方法があります。
基本はコメントアウトと別コードの設置です。可能であればWordPressの条件分岐を使って、ページごとの表示/非表示を切り替えるというものです。
技術者目線としては負けたような気にもなり、方法としてスマートではありませんが、表向きの表示はしっかりするため、ユーザー目線としてはまったく問題がない、というものがほとんどです。
その他にも「postでクエリを渡して…」というような事をすっ飛ばして、パラメータを直に記述して、初歩的なhtmlでそこに転移したりといったことを行います。
コメントアウトをつけて任意のコードを挿入する
テーマのphpを操作してエラーが出てしまうリスクを避けるために、テーマが吐き出すHTML部分などに対して、コメントアウトをつけて、任意のコードを挿入するというのも面白い試みです。
カスタムフィールドなどを利用すればそうしたことも結構簡単に実装することができます。
地下鉄山科駅から京阪山科駅まで、電車と駅構内だけを使って行こうとするとすごく時間がかかりますが(一度「御陵」まで行く必要があるでしょう)、歩いていけばすぐです(目の前ですからね)。
ルートのあり方として、例えば、PC表示用のボタンとスマートフォン用のボタンの切り替えを、PCとスマートフォンを識別して、吐き出すコードを変えるというやり方や、別ページにリダイレクトするという方法もありますが、メディアクエリで「display:none」などを使うことで実装することもできます。
これはシンプルなHTMLとCSSの技術です。
完全にシステム化する必要はあるか?
ページ数がそれほど多くない企業のホームページなどでは、特にWordPressの関数などを利用して吐き出しを行わなくても、直接記述で事足りるような部分がたくさんあります。
ホームページ制作の基本はHTMLであり、HTML5以降で考えても、この言語には優れた機能がたくさんあるはずです。
こうしたHTMLでのホームページ制作をいかに簡単にするか、いかに手作業を少なくするかという理由でphpとMySQLの仕組みが使われたり、それを応用したWordPressなどが開発されています。
しかしながら、確かにいちいち記述していくのは面倒だという部分もありながら、柔軟に設定していきたい部分もあります。そうした時にWordPressテーマやプラグインに組み込まれた仕組みが逆に邪魔になるときがあります。
カスタムテンプレートやカスタムフィールドの利用
こうしたケースでは、通常はphpの仕組みを操作して、「クエリを次の処理にどう渡すか」というような部分で解決しようとしてしまう時がありますが、ふと立ち止まって考えると、「その部分だけ無効にしてしまい、シンプルなHTMLで実装する方法で十分ではないか?」という時があります。
カスタムテンプレートを作ってしまうというのも手ですし、テーマによる吐き出し部分を無効化してカスタムフィールドで任意入力箇所を作ってしまうのも解決策になりえます。
専門性が元で専門外の解決策、シンプルな解決策を見つけ出せないとき
プラグインによるエラーなどの場合は、「何行目の記述にエラーがあります」とブラウザで表示がなされる場合がありますが、そんな表示をされても、「その記述の直し方がわからない」それが大半のケースの本音です。
その部分に問題があるわけではなく、実は別のファイルに問題があって、その行の記述との整合性がないという場合もありますからね。
「たった一行とか一文字の違いで、エラーが出るか出ないかが決まる」そんなこともよくあります。その一行を見つけるのが大変なんですけどね。
ホームページ制作はシステム化したほうが楽ですが、システム化した故の自由度の制限や、エラーのリスクというものが常につきまとっています。
こうしたエラーの修正やきちんとしたカスタマイズにはWordPressの仕組み、そしてphpやhtmlの仕組み、そしてさらに言えばサーバーなどに関しての知識をある程度網羅しておく必要があります。
逆にある程度の全体像を理解した上でホームページ制作を行うと、異なるアプローチでの解決策を見つけ出すことも可能になります。
phpなどなど、専門性が高いことは確実にプラス要素ですが、そうした専門性が元で専門外の解決策、シンプルな解決策を見つけ出せないときもあります。
そんな時は、一度「求める結果」を再確認し、HTMLを含めたホームページ制作の原点に帰って、全体像を確認してみることをおすすめします。
「あれだけ悩んでいたのは一体何だったのか?」
そんなケースも結構あると思いますよ。
何が問題かわからないのが一番困る
WordPressのエラー修正やカスタマイズがうまくいかない場合はもちろん、現実社会でも何が問題かわからないのが一番困りますよね。
WordPressのエラー修正・復旧のご依頼をよくいただきますが、場合によっては本当に1日足らずで復旧が可能なケースもよくあります。
WordPressエラーの調査を含め、相応の修正費用はいただいていますが、「短期間だから大したことない作業だ」というような印象を持たれる方はいらっしゃらず、むしろ一番「お喜びの声」が多い作業依頼だったりします。
私たちとしても
「おそらくあの『問題が見えず八方塞がりになっている状態』にいらっしゃるのだろう」
ということから、なるべく急ピッチで対応させていただいています。
確かにご依頼が「すごい難問」であるケースもあります。
私たちもその難問具合に頭を悩ませる事がありますが、「お客さまはそれ以上に悩まれていたのだろう」と考えるとそれがやりがいに変わります。
もちろんカスタマイズにおいては、システム上不可能だったり、費用の面で実装が不可能な場合があります。
そうした時は、場合によって代替策で対応させていただく場合もあります。
その一例が、今回のような基本的なHTMLで解決する方法です。
(初回投稿日 2017年7月20日)
WordPressの修正
ホームページ制作 京都 ファンフェアファンファーレでは、各種WordPressのエラー(不具合)の復旧、修正やカスタマイズに対応しています。
もしWordPressサイトを運用中のエラーなどにお困りの際は、ぜひご相談ください。
軽微なエラーの修正から、本格的なWordPressの再インストール・再設定まで幅広く対応しております。