私は(潜在的に)大規模なマルチサイトネットワークの設定を進めています。そして、必要に応じてサイトを追加および設定することをできるだけ簡単にすることを目指しています。私は現在プラグインを扱っている段階にあります。
マルチサイトで私はあなたがプラグインをアクティブにすることができるいくつかの異なる方法を知っています
/plugins
に入れ、すべてのサイトで個別にアクティブにします/plugins
に置き、 'network activate'を使って all sitesで有効にします。/mu-plugins
に入れる今、私は設定で遊んでいて、すべてのサイトでAkismetをアクティブにしたいと思います しかし 1つか2つ。プラグインをネットワークで有効にしてから1つのサイトで無効にすることは可能だと思いましたが、できません - ネットワークを有効にする場合は「ネットワークを無効にする」という選択肢しかありません。すべてのサイト.
ネットワークの便利な機能を有効にする方法はありますが、それでもサイトごとにプラグインを無効にできるという便利さがありますか?
フィルタsite_option_*
を使うことができます。
例えば。以下はid 2のブログでakismetを無効にします。
add_filter('site_option_active_sitewide_plugins', 'modify_sitewide_plugins');
function modify_sitewide_plugins($value) {
global $current_blog;
if( $current_blog->blog_id == 2 ) {
unset($value['akismet/akismet.php']);
}
return $value;
}
これは私がマルチサイト/マルチタイムインストールで特定のテーマのプラグインを無効にするのに役立ったものです。私のテーマでは、functions.phpファイルの先頭にこれらの数行を追加しました。
/**
* Disable fancybox plugin for this theme, it breaks javascript
*/
function deactivate_plugin_conditional() {
if ( is_plugin_active('fancybox-for-wordpress/fancybox.php') ) {
deactivate_plugins('fancybox-for-wordpress/fancybox.php');
}
}
add_action( 'muplugins_loaded', 'deactivate_plugin_conditional' );
このプラグイン: http://firestats.cc/wiki/WPMUPluginCommander
ネットワークアクティベーションのものを迂回して独自の処理を行います。サイトごとにプラグインを無効にできます。
更新:このプラグインはサイト全体のタグプラグインを壊しているように見えるので、本番ネットワークを試す前に注意してください。
アクティブなプラグインは、wp_ [blog_id] _sitemetaのフィールド 'active_plugins'および 'active_sitewide_plugins'のwp_ [blog_id] _オプションに格納されています。これらは直列化されたフィールドなので、自分がしていることが分からない限り編集しないでください。
Wp-admin\plugin.phpも見てください。そこに宣言されている関数を使ってあなたがやりたいことをするプラグインを書くことは可能なはずです。 is_plugin_active()およびactivate_plugin()。
しかし、私はあなたがPHPに熟達していることを前提としていますが、そうではないかもしれません。
Sorich87とuser33465からの回答は、Wordpress 4.3ではうまくいきませんでした。これをテーマのfunctions.phpに追加するとうまくいきました:
function deactivate_plugin_conditional() {
$deactivated_plugin_name = 'lazy-load/lazy-load.php';
deactivate_plugins($deactivated_plugin_name, false, true);
}
add_action( 'init', 'deactivate_plugin_conditional' );
WP 3にそのまま入っているわけではありませんが、option_ *フィルターを使用してオプションをオーバーライドすることは可能です。
また、core.trac.wordpress.orgの機能要求として提案を追加した方がいいでしょう。
マルチサイトネットワークのすべてのプラグインを処理するより良い方法は、「プラグインコマンダー」です。 http://wordpress.org/extend/plugins/plugin-commander/