AD5 WordPress Lab

テーマ・プラグイン開発時のレガシーPHP(5.2.4〜5.5.x)への対応

テーマ・プラグイン開発時のレガシーPHP(5.2.4〜5.5.x)への対応

最近、プラグインの利用者さまから、プラグインの有効化時にSyntax Errorが出る、とお問合せをいただきました。

そんな馬鹿な、と思って公開中のソースで改めてテストしてみるも、PHP5.6系、PHP7.0系環境では問題なし。

まさかと思って、PHP5.3系のサーバを引っ張り出してテストしてみても、エラーは出ない。

最終的に、判明した原因はこれ。

ここ数年もPHPを触っている方なら、見つけるのは難しいのではないでしょうか。

今では当たり前のように使っている無名関数も、実装されたのはPHP5.3からです。

従って、PHP5.2.xの環境では、エラーになるのです。

PHP5.2.x や PHP5.3.x を考慮すべきか?

WordPress公式の推奨環境を見ると、

To run WordPress we recommend your host supports:

  • PHP version 7.2 or greater.
  • MySQL version 5.6 or greater OR MariaDB version 10.0 or greater.
  • HTTPS support

That’s really it. We recommend Apache or Nginx as the most robust and featureful server for running WordPress, but any server that supports PHP and MySQL will do. That said, we can’t test every possible environment and each of the hosts on our hosting page supports the above and more with no problems.

Note: If you are in a legacy environment where you only have older PHP or MySQL versions, WordPress also works with PHP 5.2.4+ and MySQL 5.0+, but these versions have reached official End Of Life and as such may expose your site to security vulnerabilities.

WordPress.org – Requirements

となっています。

推奨はPHP7.2以降とはしつつ、

「セキュリティ的な問題等があるからオススメしないけど、PHP5.2.4以降であれば一応動くよ」的なことがかいてあります。

エンジニアの皆さまは「いまどきPHP5.2.4なんて・・・」と思うでしょうが、レンタルサーバの契約その他の政治的な理由により、PHP5.3系でWordPressを動かしているサイトも、少なからず存在するでしょう。

そう考えると、対応せざるを得ないところです。

個人的には、前述の無名関数が使えない(PHP5.3〜)ことのほか、
array_column()、password_hash()、password_verify() などが使えない(PHP5.5〜)
::class が使えない(PHP5.5〜)
定数式が使えない(PHP5.6〜)
などが結構辛いです。

もちろん、プラグイン独自にサポートするPHPのバージョンを規定するのは良いと思いますが、

エンジニアでない方には、「PHPバージョン〇〇以上」と書かれても、自分の環境がそれを満たしているのか判断できず、敬遠されてしまう理由になるかもしれません。

Plugin Outbound Posts – 記事リスト内に外部リンクを挿入

Outbound Posts – 記事リスト内に外部リンクを挿入

投稿のリストの中に、見た目は他の投稿のリンクと同じように、外部リンクを差し込みたい、なんてことはありませんか? こんな風に・・・ Outbound Posts は、このような記事風の外部リンクを簡単に投稿できるプラグインです。 このプラグインを有効化すると、各記事の投稿画面に、「外部リンク」という欄が現
Column WordPressが重い・遅いときは、まず「プラグインのスリム化」をしよう 〜調査篇〜

WordPressが重い・遅いときは、まず「プラグインのスリム化」をしよう 〜調査篇〜

WordPressが重い、遅い!? WordPressのサイトが重い、読み込みが遅いので高速化したい、という相談をよく受けます。 本シリーズでは、実際の高速化の実例を元に、事前調査から対応までの手順をご紹介します。 WordPressが遅い原因 経験上、WordPressが遅い原因の80%以上はプラグインの過剰使用です。 プラグイン
Plugin AD5 LOYALTY – WordPressで会員制サイト作成

AD5 LOYALTY – WordPressで会員制サイト作成

当サイトで使用しているプラグインです。 WordPressのサイトを簡単に会員制サイトにすることができます。 ショートコードで簡単に会員登録フォーム、ログインフォームが設置可能で、全ての投稿に対して、会員用コンテンツと非会員用コンテンツを設定することができます。 ショートコートで簡単に会員登録フォーム
Column WordPressテーマ・プラグイン開発時のセキュリティ対策

WordPressテーマ・プラグイン開発時のセキュリティ対策

WordPressのテーマやプラグインを開発、カスタマイズする際には、脆弱性を生まないよう、セキュリティ対策を十分に考慮する必要があります。 CSRF対策 管理画面内外を問わず、WordPressにリクエストを送信するフォームや、データを更新するAJAXを実装する場合には、CSRF対策を施しましょう。 リクエストを送信する
Plugin Mobile Sticky Footer – スマホ用固定フッター

Mobile Sticky Footer – スマホ用固定フッター

Mobile Sticky Footerは、スマートフォンサイトに簡単に固定フッターを設置できるWordPressプラグインです。 選べる3タイプのレイアウト 複数ボタンタイプは2ボタンから5ボタンまで設定可能。 お問合せフォームやSNSへのリンクのほか、電話ボタンの設置も可能です。 リアルタイムプレビューつきの直感的な設定画
Column WordPressにメールフォームを自力で実装する

WordPressにメールフォームを自力で実装する

WordPressにメールフォームを実装する優秀なプラグインは沢山ありますが、 ほとんどのプラグインは非開発者向けに導入しやすさを重視して作られているため、 例えば入力項目を動的にするなど、少し複雑なことをしようと思うと、 詰んでしまいます。 WordPressにはメール送信処理やデータの保存などを簡単に実装できる
Plugin WP LOYALTY Checkout add-on – クレジットカード決済

WP LOYALTY Checkout add-on – クレジットカード決済

当サイトで使用しているプラグインです。 AD5 LOYATYのアドオンとして、決済機能を提供します。 決済サービスとして、カード決済手数料が3.0%〜と安く、個人事業主でも利用可能なPAY.JPと連携できます。 (別途PAY.JPのアカウントが必要です。)
Column WordPressのテーマファイル構成を本気出して考えてみた

WordPressのテーマファイル構成を本気出して考えてみた

エンジニアの端くれとして、たかがWordPressテーマであっても、綺麗なモジュール設計がしたいわけです。 そこで、以前作ったサイトのテーマをモチーフに、テーマファイルを再設計してみました。 対象にしたサイトは、ユーザーが会員登録し、PDFコンテンツを投稿でき、ダウンロード結果を集計できるなど、そこそこ高機
Column WordPressサイトにパンくずリストをプラグインなしで実装する

WordPressサイトにパンくずリストをプラグインなしで実装する

意外と大変なパンくずリスト WordPressサイトに限らず、SEOの面でも重要視されるパンくずリスト(breadcramb nav)。 WordPressでガチで実装すると意外と面倒ですよね。 個別投稿ページだけでも、 A. 標準投稿 HOME > 親カテゴリ > 子カテゴリ > 投稿名 B. 固定ページ HOME > 親ページ >
Column WordPressのプラグインを開発するときに知っておきたいこと

WordPressのプラグインを開発するときに知っておきたいこと

WordPressのプラグインを開発する際に、技術的な実装手法以外の面で知っておくべきことをまとめました。 ライセンスについての理解 WordPressはオープンソースのソフトウェアですが、オープンソース=どう使っても自由、というわけではありません。 WordPressは、GPLライセンスのもとで配布されています。 GPL
 
ログイン
メールアドレス
パスワード
会員登録
お名前
メールアドレス
パスワード
購入手続き
カード番号
有効期限 (MM/YY)
/
セキュリティコード (CVC)