Jak sprawdzić, czy wtyczka WordPress jest aktywna w sieci lub pojedynczej witrynie?
Podczas tworzenia motywu lub wtyczki czasami musimy sprawdzić, czy dana wtyczka innej firmy jest dostępna do użycia. Tutaj nauczysz się prostego sposobu wykrywania nie tylko, czy wtyczka jest aktywna w jednej witrynie, ale także czy jest włączona w całej sieci.
Przegląd
WordPress przechowuje listę aktywnych wtyczek w różnych opcjach w bazie danych, niezależnie od tego, czy są to wtyczki włączone w całej sieci, czy wtyczki włączone w jednej witrynie sieci:
- active_sitewide_plugins: zawiera wtyczki wtyczki obsługujące całą sieć
- active_plugins: zawiera wtyczki włączone w bieżącej witrynie sieci.
Definicja funkcji
Dzięki temu możemy zakodować coś takiego, aby sprawdzić, czy dana wtyczka jest włączona w sieci lub pojedynczej witrynie:
if (! function_exists( 'elio_is_plugin_active')) {
function elio_is_plugin_active( $plugin = '') {
$network_active = false;
if (is_multisite()) {
$plugins = get_site_option( 'active_sitewide_plugins' );
if (isset( $plugins[$plugin])) $network_active = true;
}
return in_array( $plugin, get_option( 'active_plugins')) || $network_active;
}
}
Jako przykład sprawdzimy, czy wtyczka Jetpack jest aktywna. Możesz teraz użyć funkcji, którą napisaliśmy w ten sposób, przekazując jako parametr katalog główny wtyczki, jetpack, oraz główny plik wtyczki, jetpack.php:
Zobaczmy inny przykład z wtyczką WooCommerce:
Dzięki tej prostej metodzie będziesz bezpieczny podczas dodawania funkcji, które mają działać z konkretną wtyczką, ponieważ zawsze będziesz mógł sprawdzić, czy wtyczka jest włączona.