私がプライベートプラグインを書く場合、それを更新するためにWordPressの自動更新メカニズムを使う方法はありますか?
機能をカプセル化したいのですが、これは私の5つほどのブログに固有のものなので、パブリックプラグインリソースには適していません。しかし、私は簡単に更新できるメカニズムが大好きです。
これを行う方法はありますか?
該当するコードはwp-includes/update.php
、wp_update_plugins()
にあります。
$to_send = (object) compact('plugins', 'active');
$options = array(
'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3),
'body' => array( 'plugins' => serialize( $to_send ) ),
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
);
$raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);
特にapi.wordpress.orgをチェックします。技術的には、チェックを委任するために$to_send
内にキーを渡すことは可能ですが、私の知る限りではサポートされている機能ではありません。
あなたがset_site_transient_update_plugins
にフックするなら、あなたはこの変数にあなた自身のパッケージの詳細を追加することができます。プラグインアップデータを実行すると、これらの値が信頼されるように見えます。 wp-admin/update.php
とwp-admin/includes/class-wp-upgrader.php
を参照してください。これら2つの関数のコードを考えれば、私はあなた自身のアップデートサーバをインジェクトすることが可能であると思います、あなたはパッケージの詳細がどのようにフォーマットされそれにマッチするかを調べる必要があります。
このプラグインはあなたのためにそれを行います:
プライベートおよび商用プラグインの自動更新
昔から、公式のWordPress.orgプラグインディレクトリでホストされているプラグインだけが自動更新をサポートしています。さて、私はあなたがどんなプラグインにも自動更新機能を追加するために使用できるPHPライブラリを書きました。パブリックプラグイン、プライベートプラグイン、および商用プラグインのすべて - 自動アップデート通知とワンクリックアップグレードの恩恵を受けることができます。
あなたが無料で好きで...そしてGitHub、GitLab、またはBitBucketのようなものを使いたいのであれば、これはそれを扱うための良い品質とサポートされているプラグインです(プライベートと企業をサポートします):
私は同じことを調べています。参考になるかもしれないリンクがいくつかあります。
1つ目は、アップグレードAPIへの情報とポインタです。 2番目は、実際にAPIに情報を要求する方法を示すコードスニペットです。
WordPress Development Kitプラグイン をチェックしてください。私は最近私のプロプライエタリなアップデートシステムをこのプラグインに移行しました。このプラグインは、プレミアムプラグインのアップデート用のバックエンドプロセッサとして機能します。
これはセットアップにおいて上記のagileapricotによって提供される解決策に似ています。 WordPressサイトに標準のプラグインとしてインストールされます。プレミアムの.Zipファイルとplugins.jsonを、サーバー上のプロダクションディレクトリまたはプレリリースディレクトリに格納します(プラグインの設定で指定)。
プラグインを使用すると、プラグインのバージョンを一覧表示したり、ファイルをパブリック、パスワード保護、または購読保護のページにダウンロードすることもできます。 ページ上のバージョンリストの例をここに見ることができます 。
私はプレミアムアドオンの変更履歴、現在のバージョンリスト、そしてPremier Subscription保有者のダウンロードリストを公開するために何ヶ月もこのプラグインを使っています。現在、バージョン0.7.01では、これはインラインWordPressアップデートの問い合わせ先として機能しています。
あなたの何人かがそれが役に立つことを願っています。
管理する必要がないホスト型ソリューションが必要な場合は、Kernl( https://kernl.us )を調べてください。プラグインを更新するためのインフラストラクチャを提供し、独自のプラグインへの統合を容易にする、そのサービスです。