Jsem v procesu nastavování (potenciálně) rozsáhlé sítě s více stanicemi a snažím se, aby bylo možné v případě potřeby přidat a nakonfigurovat stránky. Momentálně jsem ve fázi, kdy se zabývám pluginy.
S multisite jsem si vědom několika různých způsobů, jak aktivovat pluginy
/plugins
, aktivujte jej na všech stránkách invidually/plugins
, použijte 'network aktivovat' pro aktivaci na all sites/mu-plugins
, automaticky aktivovaného na všech stránkáchHrál jsem s nastavením a chci aktivovat Akismet na všech stránkách ale jeden nebo dva. Myslel jsem, že budu moci aktivovat plugin a pak ho vypnout na jednom webu, ale nemohu to udělat - pokud používám aktivaci sítě, pak je zde pouze možnost „deaktivovat síť“ - která deaktivuje plugin napříč všechny stránky.
Existuje způsob, jak mít praktickou funkčnost sítě aktivovat, ale přesto mít pohodlí, že jsou schopni deaktivovat pluginy na webu po stránce?
Můžete použít filtr site_option_*
.
Např. následující zakáže akismet na blogu s id 2.
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;
}
Zde je to, co pro mě fungovalo, abych vypnul plugin pro jedno konkrétní téma na instalaci s více stanicemi/multitheme. Přidal jsem těchto několik řádků v horní části souboru functions.php v mém motivu:
/**
* 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' );
Tento plugin: http://firestats.cc/wiki/WPMUPluginCommander
obchází síťové aktivace a provádí své vlastní. a umožňuje zakázat plugin na webu podle webu.
Aktualizace: Vypadá to, že tento plugin rozbije plugin pro webové stránky, takže buďte opatrní před pokusem o produkční síť.
Aktivní pluginy jsou uloženy v wp_ [blog_id] _options v poli 'active_plugins' a 'active_sitewide_plugins' v wp_ [blog_id] _sitemeta. Jedná se o serializovaná pole, takže je neupravujte, pokud nevíte, co děláte.
Podívejte se také na wp-admin plugin.php. Mělo by být možné napsat plugin, který bude dělat to, co chcete, pomocí funkcí zde uvedených, např. is_plugin_active () a aktivovat_plugin ().
Nicméně, předpokládám, že jste zdatní v PHP, což nemusí být případ.
Odpovědi od sorich87 a user33465 nefungovaly pro mě s Wordpressem 4.3. Přidání této funkce do funkce theme.php fungovalo:
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' );
Není v krabici v WP 3, ale myslím, že by bylo možné přepsat volbu pomocí filtrů option_ *.
Také by bylo sladké, kdybyste návrh přidali jako požadavek na funkci v souboru core.trac.wordpress.org.
Lepší způsob, jak zpracovat všechny pluginy v síti Multisite, je "Plugin Commander", který naleznete zde: http://wordpress.org/extend/plugins/plugin-commander/