web-dev-qa-db-ja.com

プラグインが更新されないようにする

私はプラグインにいくつかのカスタム修正を加えました。 WPでこのプラグインの正式なアップグレードが行われたという通知を受けたら、変更されたファイルを新しいバージョンと統合する必要があるため、開発者は手動でアップグレードを行う必要があります。

一連のアップグレードを行っている間に、スタッフがこのプラグインのアップグレードボタンを誤ってクリックしてしまうことは望ましくありません。

ただし、開発者が更新をスケジュールできるように、アップグレード通知を引き続き確認する必要があります。そのため、ヘッダーのバージョン番号を非常に高い値に増やすことは解決策ではありません。可視性がブロックされるためです。

WPをアップグレードできないようにして、プラグインがまだ有効であることをどのようにブロックできますか?

6
eComEvo

まず第一に...既存のプラグインを修正することは本当に悪い考えです。

あなたが本当にこれをしなければならないなら、あなたはこのコードでアップデートリンクを隠すことができます(これはYoast SEOのために働く):

function remove_update_notification_link($value) {
    if ( array_key_exists('wordpress-seo/wp-seo.php', $value->response) ) {
        $value->response[ 'wordpress-seo/wp-seo.php' ]->package = '';
    }
    return $value;
}
add_filter('site_transient_update_plugins', 'remove_update_notification_link');

通知が表示されますが、更新へのリンクの代わりに情報が表示されます。「このプラグインでは自動更新は使用できません。」

このコードをプラグインに正しく入れると、より自動的な方法を使用できます。

function remove_update_notification_link($value) {
    if ( array_key_exists(plugin_basename(__FILE__), $value->response) ) {
        $value->response[ plugin_basename(__FILE__) ]->package = '';
    }

    return $value;
} 
add_filter('site_transient_update_plugins', 'remove_update_notification_link');
1

アクティブテーマのファイルfunctions.phpにこの行を追加します

function filter_plugin_updates( $value ) {
    unset( $value->response['path_to_plugin/plugin_name.php'] ); // one plugin by line
}

add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

これにより、アップデート要件が完全に隠されます。コードにコメントを付けて利用可能なアップデートがあるかどうかを自分で確認する必要があります。

1
Core972

@ Core92の答えは正しいですが、他のプラグインを有効/無効にするときに警告が表示される点が異なります。

function filter_plugin_updates( $value ) {
    $toAvoid='path_to_plugin/plugin_name.php';
    if( isset( $value->response[$toAvoid]) )
        unset( $value->response[$toAvoid] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
1
Andrea Somovigo