アイデアの甕

アイデアを放り込んでおくと甕は腐臭を発しない

当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

Google_Client.phpを利用するWordPressプラグイン同士のコンフリクト解消は開発者に依頼すべし?

 

エンジニアのためのWordPress開発入門 (Engineer's Library)

 

WordPressは便利。プラグインを使ってGoogleのサービスを関連付ければ、もっと便利に。

 

だがしかし。

 

プラグイン同士のコンフリクト(衝突)が起こりやすいのもまた事実なようで。

 

 

 

プラグインによる不具合の例

環境は以下。

 

WordPress: 4.7.2

PHP: 7.x

 

導入プラグイン

①Google Analytics Dashboard for WP

ja.wordpress.org

 

先に入れていたGoogle Analytics Dashboard for WPは、ダッシュボード上にアナリティクスの結果を載せてくれる優れもの。

 

②CF7 to Spreadsheet

ja.wordpress.org

 

また「CF7 to Spreadsheet」「Contact Form 7」という超有名フォーム作成プラグインにGoogleスプレッドシート連携機能を追加するプラグインとして導入を検討しました(当プラグイン選択理由については後述)。

 

エラー表示

ダッシュボード上の「Google アナリティクス ダッシュボード」ウィジェットに、下記のエラー表示。

 

Warning: array_merge(): Argument #2 is not an array in ...(略)

 

Fatal error: Uncaught Error: Class name must be a valid object or a string in ...(略)

 

略部分は、まぁ要するに「Google_Client」クラスでコンフリクト起こしてますよという感じのエラー内容です。

 

ちなみに、Googleが提供するサービスをPHP(WordPressの基盤となるプログラミング言語)から利用するには、Googleが用意した下記のライブラリを用います。

 

github.com

 

みんな同じものを活用するので、残念ながらコンフリクトが起こりやすい環境ではあるわけですね。

 

同一エラーの調査

同じようなエラーを起こしている過去の事例について主に英語の情報を調査してみました。

 

Conflict when installing Google Analytics Dashboard for WP

 

2年前(2015年)に技術フォーラムで質問している人がいました。適切なアドバイスを得ることができず未解決のようです。

 

また先に挙げた「CF7 to Spreadsheet」とは別のプラグイン「CF7 Google Sheet Connector」のサポート掲示板でも同じ話題がありました。

 

Topic: Fatal Error on Activation « WordPress.org Forums

 

これは2017年2月現在未解決ですが、ほぼほぼ同じ問題が起こっている模様。

 

そして、質問者はその解決策をすら提示しています。

 

My idea to make them useful at the same time and change le name of “Google_***” classes by “CF_Sheets_Google_***”

For example, I have seen Yoast plugin using it too, but they change classes by “Yoast_Google_Client” etc.

 

要するに、同じものを同じ名前で使えば確実にバッティングするのだから、同じものでも別の名前で使うようにしましょうと開発者に提案しています。別のプラグイン開発者はそれでうまく問題回避していますよ、とも。

 

2017年2月8日頃に開発者側の答えて曰く。

 

Thanks for notifying the duplicate issue, we’ll solve this issue in next release, soon as possible,

 

「知らせてくれてありがとうやで!次の更新でこの問題を解決するわ、できるだけ早くに」(意訳)

 

という有難いお話。すばらですね。期待。

 

「Contact Form 7」と「Googleスプレッドシート」の連携

さて、この流れで当初描いていた絵は崩れています。使用中のプラグイン「CF7 to Spreadsheet」が使えないためです。

 

しかし。

 

実は最初は多くの人がインストールして、更新も頻繁になされている「CF7 Google Sheets Connector」を導入しようとしていたのです。

 

 

ja.wordpress.org

 

ところがどっこい、Google側からCF7 Google Sheets Connector」に対して権限を与えるコードを取得したのち、それを「CF7 Google Sheets Connector」に登録することができなかったのです。

 

テキストボックスに取得したコードを入力し「save」ボタンを押しても、

 

「いやいや、そこのテキストボックスは空白ではいかんのや!」(意訳)

 

という頓珍漢なエラーが出るばかりで、登録できませんでした@2017.2.8(実は英語のサポートフォーラムでも同様のクレームが出ている)。

 

そこでやむなく、インストール数10~50という「CF7 to Spreadsheet」を恐る恐る入れてみれば、なんとかGoogle Sheets*1側にデータ送信まではいけたという経緯。

 

で、今日のエラーでちょっと困ったなと。しかし「CF7 Google Sheets Connector」のエラーはもしかすると「Google_Client」絡みだったのではと今はポジティブに捉えられるわけで、そうなると問題解消は次期アップデートで為される可能性がありますね。

 

期待。

 

ちなみに、日本の方が制作された同様のプラグイン「Contact Form 7 to SpreadSheet」がありまして。

 

www.msng.info

 

しかし残念ながら2014年からあまり更新されておらず、まぁどう考えても最新バージョンのワードプレスに載せるには不安があります。

 

というわけで、今のところ「CF7 Google Sheets Connector」に大きな期待をしている次第。

 

 

エンジニアのためのWordPress開発入門 (Engineer's Library)

エンジニアのためのWordPress開発入門 (Engineer's Library)

  • 作者: 野島祐慈,菱川拓郎,杉田知至,細谷崇,枢木くっくる
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

 

うむ、この本欲しい。

 

追記

その後の顛末を記しています。

 

bukki.hatenablog.com

 

 コンフリクトが直接的な原因ではなかったのかもしれない…。

*1:細かい話ですが2017年現在、英語表記では「Google Sheets」、日本語表記だと「Google スプレッドシート」としているみたいですね。

Google スプレッドシート - オンラインでスプレッドシートを作成、編集できる無料サービス