オレオレWordPressプラグインが公式ディレクトリ上のプラグインとうっかりかぶってアップデートされないようにする

たとえば特定のクライアント向けにWordPressのプラグインを開発したあとで、たまたま同じ名前のプラグインが公式ディレクトリに登録されると、そっちのほうがバージョン番号が新しいときにうっかりアップデートしてしまうことがありえます。

(実際に10分前にやらかした。笑)

同じ名前というのは、そのプラグインのディレクトリ名が同じという意味で、このユニークな名前のことをスラッグと呼びます。

わかりやすくするつもりで一般的な名前を使うとすでに公式ディレクトリに同じ名前のものがあったり、今はなくても忘れた頃に他の誰かが登録してうっかりアップデートしてしまって慌てるわけですね。

そんなトラブルを防ぐために、特定の顧客向けを想定したプラグインには以下のコードを入れておくと安心です。

add_filter( 'site_transient_update_plugins', function( $value ) {
  if ( ! empty( $value->response[ plugin_basename( __FILE__ ) ] ) ) {
    unset( $value->response[ plugin_basename( __FILE__ ) ] );
  }
  return $value;
} );

これはそのプラグインが有効化されているときにだけ期待通りに動きますので注意してください。無効化されているときはこのコード自体が動作しませんのでアップデートが発火してしまいます。

テーマでも同じようなことはできますが、テーマの場合は example.com みたいな感じでそのドメイン名にしておくとかぶることがなくなります。

追記

Facebookページのコメント欄でデジタルキューブ岡本さんとやり取りしたのですが、以下のようなアイディアもあります。

  • コードを少し変えないといけないけど、wp-content/mu-plugins でこれをやればプラグインを無効化された時の心配をしなくて大丈夫。(岡本)
  • プラグインのスラッグを _ で始めるのもあり。(宮内)
  • ありえないぐらい大きなバージョン番号(9999みたいな)をあらかじめ指定しておく。(岡本)

実は僕は全部の顧客向けに必ずインストールするプラグインというのがあってそのプラグイン名は _wp という名前だったりします。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください