良いフォルダ名を常に使用する
コードに入る前に、あなたのプラグインが WordPress.org の更新によって上書きされないことを確実にするための最も良い方法は、良い名前を使用することです。会社のためにプラグインを作成している場合は、companyname-function-plugin
のようなフォルダ名を付けてください。たとえば、FaceRange で働いていてステータスプラグインを作成している場合は、facerange-status-plugin
と名付けることができます。
禁止用語「プラグイン」を使用しているため、私たちはそれを受け入れません。また、プラグインチームはプラグインの所有者が 法的に FaceRange を代表していることを確認します。
更新 URI
WordPress 5.8 以降、WordPress.org API が更新をチェックする方法に新機能を追加し、新しいヘッダー「更新 URI」を使用してブロックできるようにしました。
自分のサイト用に作成したプラグインがあり、そのフォルダ名を my-plugin
にしたとしましょう。それは一般的なフォルダ名であり、他の誰かが使用する可能性が高いです。また、その一般的な性質のために、私たちのシステムでブロックを許可する名前ではありません。
更新 URI ヘッダーはプラグインヘッダーに追加できます。メインプラグインファイルのこのセクションを探してください:
/**
* Plugin Name: My Cool Plugin
* Plugin URI: https://example.com/my-plugin/
* Description: My Plugin does cool things.
* Version: 1.0
* Author: the team
* Author URI: https://example.com/
* Text Domain: my-plugin
* License: GPLv2
* License URI: https://opensource.org/licenses/gpl-2.0.php
*/
適用するには、更新 URI の新しいヘッダーを追加し、値に 非 WordPress.org URI を入れてください:
* Update URI: https://example.com/my-updater/
希望する場合は Update URI: false
に設定することもできます。worpress.org/plugins
または w.org/plugins
を含まない限り、それは保護されます。
更新のフィルタリング
別の方法は、古いバージョンの WordPress でサポートされているもので、外部 API リクエストをフィルタリングし、あなたのプラグインに対するリクエストを破棄することです。
このコードは Mark Jaquith によって書かれたもので、あなた自身のプラグインに追加できます:
function example_hidden_plugin_12345( $r, $url ) {
if ( 0 !== strpos( $url, 'https://api.wordpress.org/plugins/update-check' ) )
return $r; // Not a plugin update request. Bail immediately.
$plugins = unserialize( $r['body']['plugins'] );
unset( $plugins->plugins[ plugin_basename( __FILE__ ) ] );
unset( $plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ] );
$r['body']['plugins'] = serialize( $plugins );
return $r;
}
add_filter( 'http_request_args', 'example_hidden_plugin_12345', 5, 2 );
これにより、更新リクエストが WordPress.org API からのものであり、このプラグインのプラグインフォルダとファイル名と一致するかどうかを確認します。一致する場合、そのプラグインは更新をチェックするプラグインのリストから削除されます。