web-dev-qa-db-ja.com

アップグレード通知機能からのプラグイン名の競合を回避する方法

私は自分のサイトにGoogle Analyticsを追加するためのプラグインとしてクイックハックをラップしました。それを "Google Analytics"と名付け、そして確かに、WPは私のv0.1プラグインをプラグインリポジトリからランダムなプラグインにアップグレードすることを勧めてくれました。

WP 2.7から3.0の間に数回発生したことを漠然と思い出します。これを無効にするための新しいAPIがどこかにありますか、それとも避けるための唯一の方法はそれを一意にするためにプラグイン名(ファイル名ではなく、プラグイン画面に表示される実際の名前)を追加することです

私の特定のユースケースでは、プラグインはmc-ga/mc-ga.phpにあり、プラグインファイルのヘッダーの先頭にある他のいくつかのメタフィールドと共に「Google Analytics」という名前です。 WPは "Google Analytics"に基づいて更新通知を出します(リポジトリ内でmc-ga.phpプラグインファイルが見つかりませんでした)。

WPは私が知らない追加のフィールドを追加することを可能にしますか?そのような衝突を避けるために、レポURLか本当にユニークな何か?

4

updatebleリストからあなたのプラグインを削除することができます。

add_action( 'plugins_loaded', function(){
    add_filter( 'site_transient_update_plugins', function ( $value ) 
    {
        if( isset( $value->response['google-analytics/google-analytics.php'] ) )
            unset( $value->response['google-analytics/google-analytics.php'] );
        return $value;
    });
});

このフィルタを追加すると、同名プラグインがアップデートチェックから完全に排除されます。そして、単純なFPTアップロードを介して手動で更新を行っていると仮定しています。 プラグインの名前を(メインのphpファイルで)変更した場合でも、更新通知が表示されますか? で説明しているように、多くの要因があります。 OPの説明(同じ名前、異なるスラグ)によると、フィルタを使用せずに、おそらくプラグインのVersionヘッダをより大きな番号に設定するか、yyyy.mm.ddのような慣習的でない番号を使用することが最善です。

もし私たちが 私たち自身のレポ を設定しているのであれば、衝突は起こらないと私は信じています。

5
brasofilo

私が提案しているのは、あなたのプラグインを作る前に、まずあなたが与えようとしている名前が WordPressプラグインレポジトリ にすでに存在しているかどうかをチェックしてください。そうでなければ、それから先に進んでプラグインを開発することができます。

存在する場合は、プラグインに別の名前を付けてください。アップグレードは名前に基づいているため、同じ名前の2つの異なるプラグインを管理することはできません。 WordPressは公式のリポジトリから自動的にこのアップグレードオプションを行います。

0
sun

誰かがそれを必要とする場合に備えて、後世のためにこれを加える:

if (!defined('STRICTER_PLUGIN_UPDATES')) define('STRICTER_PLUGIN_UPDATES', false);

# ============
# WP Updates
# ============

if (STRICTER_PLUGIN_UPDATES) :

# - Drop plugin upgrades when the slugs don't match

add_filter('site_transient_update_plugins', function($updates) {
    if (!$updates->response) return $updates;

    foreach ($updates->response as $key => $response) {
        $slug = strpos($key, '/') !== false ? dirname($key) : basename($key, '.php');
        if ($slug != $response->slug) {
            unset($updates->response[$key]);
        }
    }

    return $updates;
});

endif; # STRICTER_PLUGIN_UPDATES
0

あなたがサイトのためにカスタムであるプラグインを持っているならば、その名前に接頭辞としてサイトの名前を付けてください。

「Example.com - Google Analytics」という名前のプラグインをWordPress.orgディレクトリに入れることは絶対にできません。

さらに、「プラグインURI」フィールドをプラグインヘッダーに追加します。プラグインURIは、マッチングプロセスの一部として使用され、一致する名前よりもさらにユニークなものを提供します。

0
Otto