web-dev-qa-db-ja.com

テーマによるプラグイン/プラグインアクションを無効にする

私のサイトに Google Analyticatorプラグイン をインストールしました。私は MobilePressプラグイン を使って、スマートフォン以外の携帯ブラウザ用に設計されたテーマを提供しています。このテーマで使用するために Google Analytics for Mobile を設定しましたが、大きなjsファイルへの呼び出しが含まれているため、Analyticatorプラグインを無効にします。

Functions.phpや他の方法でプラグインを無効にすることが可能かどうか誰かが知っていますか?

ページに機能を追加するコードを見つけたと思うので、プラグイン全体を無効にすることができない場合、実行のためにアクションを停止することは可能ですか?私は運なしで直接それらを無効にしようとしました。これがプラグインファイルのコードです。

add_action('wp_head', 'add_google_analytics', 999999);
add_action('init', 'ga_outgoing_links');

これらのアクションを削除しようとしました。

remove_action('wp_head','add_google_analytics',9999999);
remove_action('init', 'ga_outgoing_links');

任意の助けは大歓迎です。

16
PNMG

WordPressがプラグインを起動すると、activate_plugin()関数を呼び出します。この関数はサンドボックス内のプラグインをアクティブにし、成功した場合には他の場所にリダイレクトします。プログラム的にプラグインの依存関係を有効にするために数人の作者によって使用されてきました。

別の関数deactivate_plugin()があります。これは逆のことを行います。実際には、[無効化]または[無効化]をクリックしたときにWordPressがプラグインを無効化する方法です。

インストールされているプラ​​グインを無効にするには、以下を呼び出すだけです。

deactivate_plugins( '/plugin-folder/plugin-name.php' );

または、一度に複数のプラグインを無効にするには:

deactivate_plugins( array( '/first-plugin/first.php', '/second-plugin/second.php' ) );

無効化フックを呼び出さずにプラグインを無効にできるようにする2番目のパラメータ(最初のものは無効にするプラグインの文字列または配列)です。デフォルトではfalseに設定されています。そのままにしておくことをお勧めします。何らかの理由で無効化を回避したくない場合は、そうしてください。

deactivate_plugins( '/plugin-folder/plugin-name.php', true );

これはプラグインをオフにするだけですが、プラグインが無効になったときに行うことを登録したものは何も起動しません。そのため、プラグインが無効化されたときにオプションやdbテーブルを削除する場合は、その情報を保持して他の場所で使用するために、この「サイレント」無効化を実行する必要があります。

22
EAMann

これは上記のEAMannの素晴らしい答えのおかげです、そして私はそれが元のポスターにも役立つかもしれないと思いました...

プレミアム版をアップロードした場合、ユーザーが私のプラグインを無効にすることを確実にするための解決策が必要でした(潜在的な競合を避けるため)。以前は、is_plugin_activeで状態を検出し、それをオフにするようにユーザーに確認するエラーメッセージを表示していました。これは非常にスムーズです...

function deactivate_plugin_conditional() {
    if ( is_plugin_active('plugin-folder/plugin-name.php') ) {
    deactivate_plugins('plugin-folder/plugin-name.php');    
    }
}
add_action( 'admin_init', 'deactivate_plugin_conditional' );

注:register_activation_hookでは機能しないようでしたが、admin_initは魅力的に機能します。

11
Mark Jeldi

これが私の解決策です。他のプラグインを無効にできるプラグインを作成してください。

/*
 * Plugin Name: Disable/Configure Plugins
 * Description: Lets you disable/configure plugins based on environment variables
 * Author:      Chris Sewell
 */

/**
 * Disable specified plugins in development environment.
 * 
 * This is a "Must-Use" plugin. Code here is loaded automatically before regular plugins load.
 * This is the only place from which regular plugins can be disabled programatically.
 * 
 * Place this code in a file in WP_CONTENT_DIR/mu-plugins or specify a custom location 

 * to "development" or "production" in each particular server/environment.
 */

/* Disable specified plugins in development environment */
if (((getenv('environment') == 'production') || (getenv('environment') == 'alpha')) == false) {
    $plugins = array(
        'w3-total-cache/w3-total-cache.php'
    );
    require_once(ABSPATH . 'wp-admin/includes/plugin.php');
    deactivate_plugins($plugins);
}

これを本番環境にプッシュし、有効にしてから、データベースをローカルの開発用マシンに移動します。

出典

1
user128526