web-dev-qa-db-ja.com

コアとプラグインのアップデートを無効にする方法

コアとプラグインのアップデートを無効にする方法はありますか?私はプラグインと WordPress Core を少し修正しています(そうするのは罪ですが)。

7
Josh Karteson

はい、できます…

define( 'DISALLOW_FILE_MODS', true ); 

このスニペットをwp-config.phpファイルに入れると、コアとプラグインの更新を無効にすることができます。

7

プラグインの更新をすべて無効にする

それはshouldと同じくらい簡単です:

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Plugin Updates */
remove_action( 'load-update-core.php', 'wp_update_plugins' );

テーマ/プラグインの更新を拒否(または再ルーティング)する

シングルコアおよびテーマの更新は、 このスクリプト my Mark Jaquithによって無効にできます。

一部のテーマファイル内からのプラグインの場合

// Plugins
add_filter( 'http_request_args', 'cws_hidden_plugin_12345', 5, 2 );
function cws_hidden_plugin_12345( $r, $url )
{
    if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) )
        return $r;

    $plugins = unserialize( $r['body']['plugins'] );
    unset(
        $plugins->plugins[ plugin_basename( __FILE__ ) ],
        $plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ]
    );
    $r['body']['plugins'] = serialize( $plugins );

    return $r;
}

テーマfunctions.phpファイル内からのテーマの場合

// Themes
add_filter( 'http_request_args', 'cws_hidden_theme_12345', 5, 2 );
    function cws_hidden_theme_12345( $r, $url )
    {
    if ( 0 !== strpos( $url, 'http://api.wordpress.org/themes/update-check' ) )
        return $r;

    $themes = unserialize( $r['body']['themes'] );
    unset(
        $themes[ get_option( 'template' ) ],
        $themes[ get_option( 'stylesheet' ) ]
    );
    $r['body']['themes'] = serialize( $themes );

    return $r;
}

特定のプラグインを無効にする

説明されているカスタムプラグイン内から スタック上のこの回答で

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Aksimet Updates */
add_filter( 'wpse120589DisableAkismetUpdates', 'wpse120589DisableAkismetUpdates' );
function filter_plugin_updates( $value )
{
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}

コアアップデート

実際には、shouldはそれと同じくらい簡単であるべきです:

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Core Updates */
add_filter( 'pre_site_transient_update_core', '__return_null' );

古いバージョンの場合 John Billionは完全なプラグインを作成しています すべてを対象としています。

自動更新の詳細情報ときめ細かい制御

Andi Nacinだけ WordPress/Makeに投稿してください このトピックの詳細を説明します。

バージョン管理はシャットダウンスイッチです。

WordPressがバージョン管理システムを検出すると、あなたが何をしているかを認識し、あらゆる種類の自動更新を回避します。 Subversion、Git、Mercurial、およびBazaarを検索し、どこでも検索します。

VCSディレクトリ(WP_PLUGINS_DIRWP_LANG_DIR.svn、の2つのディレクトリ(ABSPATHと.git、または.hgなどの更新対象)を検索することで機能します。 .bz)。そして、それもレベルアップに見えます-そして、それがドライブのルートに到達するまで探し続けます。したがって、/または/var/www/または/var/www/mysite.com/で単一のSubversionチェックアウトを実行している場合、/var/www/mysite.com/public_html/wordpress/でのWordPressインストールは更新の受信をブロックされます。明らかに、それは注意のサイトで間違っています。

同じことは、ファイルおよびテーマエディターを無効にする場合にも当てはまります。

DISALLOW_FILE_MODS定数は、バックグラウンドでの更新だけでなく、すべてのユーザーによるあらゆる種類のファイルシステムの変更をブロックします。そのため、ファイルエディターはなくなりました。コア、テーマ、またはプラグインを更新する機能。新しいテーマまたはプラグインをインストールする機能。

単一のwp-config.phpスイッチ:

define( 'AUTOMATIC_UPDATER_DISABLED', (bool) true/false );

そして

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

# Enables core updates for minor releases (default):
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

リンクされた投稿の詳細。


注:上記のコードはすべて、5分間のGoogle検索の実行中にスクレイピングされるため、テストされず、GitHub WordPressソースコードとGitHub検索結果に対して視覚的に比較/テストされます。内容を自分で確認する必要があります。また、将来的には、そのような研究を質問に含めてください。

7
kaiser

単純で、コアを変更しないでください......コアを変更することは基本的にwordpressをフォークすることです、そしてあなたが長い間フォークを維持できる開発チームの一部でない限りあなたはあなたのクライアントを行き止まりにしていますアップグレードパスはサイトを再開発することです。彼はそれで大丈夫かもしれませんが、それは事前に合意する必要があるものです。

とにかく、自動更新を無効にしても十分ではないので、ダッシュボードからすべてのアップグレード通知を削除するか、クライアントがサーバーにFTPアクセスできないようにする必要があります。

この場合、フォークを長期間維持できる可能性があることを除けば、信頼できるソース(例:jetpack)からの非自明なプラグインにも同じ論理が適用されます。

プラグインの更新を無効にして手動でアップグレードしようとするのをやめさせるには、プラグインの名前とそのディレクトリを変更するだけです。もちろん、新しいプラグイン名として"${original plugin name} tailored for $client DON"T UPGRADE"、新しいディレクトリとして${original plugin name}-for-$clientのように、他のプラグインで使用されていないプラグイン名とディレクトリ名を使用する必要があります。

0
Mark Kaplun