Zablokowanie działania wybranych wtyczek podczas edycji produktu w WooCommerce

0

Cześć,

mam następujący problem: staram się napisać skrypt, który będzie wyłączał wybrane wtyczki, jeśli użytkownik będzie akurat edytował stronę lub produkt w Wordpressie.
Do postawienia strony/sklepu został użyty Divi Builder. Problem w tym, że jeżeli chcemy edytować produkt i zapisać zmiany, czasami trzeba na to czekać.... 20 sekund. W Google Dev Tools, gdy wejdziemy w zakładkę Network, pokazuje, że strona pobiera blisko 50 mb zasobów... Gdy wyłączymy wszystkie wtyki na stronie i zostawimy samo Divi + WooCommerce, zasysa już "tylko" 24mb i zapisuje zmiany w około 6 sekund.
Stąd pomysł automatycznego wyłączania niepotrzebnych wtyczek, podczas gdy admin edytuje produkt. Użyłem do tego następującego kodu, znalezionego w sieci (wrzucony do mu-plugins):

<?php add_filter( 'option_active_plugins', 'disable_plugins_per_page' ); function disable_plugins_per_page( $plugin_list ) { // Quit immediately if not post edit area. global $pagenow; if (( $pagenow == 'post.php' || $pagenow == 'edit.php' )) { $disable_plugins = array ( // Plugin Name 'query-monitor/query-monitor.php' ); $plugins_to_disable = array(); foreach ( $plugin_list as $plugin ) { if ( true == in_array( $plugin, $disable_plugins ) ) { //error_log( "Found $plugin in list of active plugins." ); $plugins_to_disable[] = $plugin; } } // If there are plugins to disable then remove them from the list, // otherwise return the original list. if ( count( $plugins_to_disable ) ) { $new_list = array_diff( $plugin_list, $plugins_to_disable ); return $new_list; } } return $plugin_list; } ale niestety dalej widzę, że ładuje CSSy i JS: https://monosnap.com/file/jjLr8iDjMDQOcyvb2nyR3eKjtGTh2r Prosiłbym bardzo o pomoc w modyfikacji kodu, żeby w końcu zaczął poprawnie działać:(
0

Divi+woo = bardzo duże obciążenie i nie powinno być stosowane dla sklepów

co do tematu, możesz spróbować pluginem: https://wordpress.org/plugins/plugin-organizer/

jeśli nie to dla userów nie adminów:

add_filter( 'option_active_plugins', 'disable_logged_in_plugin' );
 
function disable_logged_in_plugin( $plugins ) {
     
    require (ABSPATH . WPINC . '/pluggable.php');
 
    if ( is_user_logged_in() & !is_admin() ) {
 
        $key = array_search( 'folderPlugina/plikIndex.php' , $plugins );
 
        if ( false !== $key ) {
            unset( $plugins[ $key ] );
        }
         
    }
    return $plugins;
}

Ponadto zaznajom się, wygooglaj z funkcją mu-plugins - folder z pluginami, którego nie widać w admin panelu, to w nim musisz umieścić ten kod (czyli wp-content/mu-plugins/disable-logged-in-plugin.php).
Powodzenia.

0

Dzięki za odpowiedź.
No przez to, że jest to oparte na Divi backend dość mocno zamula, ale gdy wyłączysz wszystkie inne wtyki, to chodzi całkiem sprawnie... Więc SAMO Divi + WooCommerce nie jest aż takie super złe, aczkolwiek demonem szybkości nie jest... Swoją drogą: czy np. Elementor jest lżejszy dla rozwiązań sklepowych, czy tylko i wyłącznie jakieś proste skórki?

Wtyczki już próbowałem, niestety bez powodzenia:-S

Czyli ten kod zadziała tylko dla kont, które nie są adminami, np. Shop Manager?

Tak, wiem, że trzeba to wrzucać do katalogu wp-content/mu-plugins

0

Dzięki, dla jednej wtyczki działa super, ale jak wrzucam więcej niż jedną, przestaje działać:-S Czy mógłbyś pokazać jak powinien wyglądać kod dla dwóch i więcej wtyczek do zablokowania? Byłbym bardzo wdzięczny:)

0

No trochę byś sam pokombinował to też by się nic nie stało ;)

add_filter( 'option_active_plugins', 'disable_logged_in_plugin' );

function disable_logged_in_plugin( $plugins ) {

    require (ABSPATH . WPINC . '/pluggable.php');

    if ( is_user_logged_in() & !is_admin() ) {

        
        $plugins_all = array ('folderPlugina/plikIndex1.php',
           'folderPlugina/plikIndex2.php','folderPlugina/plikIndex3.php' );

	    foreach ( $plugins_all as $plugin ) {    
	        $key = array_search( $plugin, $plugins );
	        if ( false !== $key ) {
	            unset( $plugins[ $key ] );
	        }
	    }
    }
    return $plugins;
}
0

Dzięki:) Niestety z php jestem ciemny i dopiero zaczynam się go uczyć...

Hmm niestety z kodem jest pewien problem, bo wyłącza on wtyki w całym wp-adminie dla zalogowanych userów... a chodzi o to, żeby blokował ich ładowanie wyłącznie w przypadku edytowania/dodawania produktu (żeby nieco przyspieszyć ładowanie strony edycji produktu i zapisywanie zmian). Czy Twój kod można zmodyfikować w ten sposób??

1 użytkowników online, w tym zalogowanych: 0, gości: 1