Suprimarea notificărilor depreciate

16 sept. 2016, 13:22:39
Vizualizări: 21.4K
Voturi: 15

Când folosesc:

define('WP_DEBUG', 1);

În fișierul meu wp-config.php, funcționează bine, dar modific o temă veche și aș dori să suprim notificările depreciate.

După înțelegerea mea, adăugarea acestui cod:

error_reporting( E_ERROR | E_NOTICE | E_PARSE )

Ar trebui să rezolve problema. L-am adăugat în wp-config.php și în header.php în tema mea. Din păcate, nu are niciun efect. Este ceva setat la nivel de server? De asemenea, nici următorul cod nu face vreo diferență:

ini_set('display_errors', 1);

Așa cum s-a cerut în comentariile de mai jos, iată câteva dintre notificări. Folosesc o versiune modificată a temei Construct 2, destul de veche acum, dar nu ar fi sigur să o actualizez. Încerc să conving clientul să mă lase să o rescriu, site-ul este destul de simplu, dar cum nu poate vedea nimic în neregulă, nu este stricat, nu vrea să cheltuiască banii.

Deprecated: Atribuirea valorii de retur a new prin referință este depreciată în /Volumes/Macintosh HD/Sites/MAMP (custodian)/wordpress/wp-content/themes/construct2/option-tree/ot-loader.php la linia 369

Strict Standards: Declarația DropDown_Nav_Menu::start_lvl() ar trebui să fie compatibilă cu Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = Array) în /Volumes/Macintosh HD/Sites/MAMP (custodian)/wordpress/wp-content/themes/construct2/dropdown-menus.php la linia 192

4
Comentarii

în ce fișier apare prima notificare?

mmm mmm
16 sept. 2016 13:31:48

Poți afișa notificarea de depreciere pe care o primești? Asta mă va ajuta să îți ofer un răspuns mai bun

Ethan Rævan Ethan Rævan
16 sept. 2016 17:04:56

Vezi mai sus adăugat la postarea originală

Chris Pink Chris Pink
18 sept. 2016 12:55:55

@ChrisPink Din experiența mea, când am lucrat cu o instalație mai veche de WordPress, aș introduce codul pe care l-am oferit în răspunsul meu atât în fișierul ot-loader.php cât și în dropdown-menus.php.

Ethan Rævan Ethan Rævan
18 sept. 2016 17:37:23
Toate răspunsurile la întrebare 6
2
17

Am reușit să suprimați notificările din jurnal și erorile afișate folosind funcția error_reporting într-un plugin must-use, care este încărcat suficient de devreme pentru a prinde majoritatea avertismentelor din codul de bază al WordPress. Acest lucru este util pentru avertismentele care provin din fișierele de bază/pluginuri pe care nu ar trebui să le modificați.

Am creat un fișier php în folderul /wp-content/mu-plugins/ cu acest cod:

<?php 
error_reporting(E_ALL & ~E_WARNING & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_NOTICE);
?>
11 nov. 2021 21:01:12
Comentarii

Mulțumesc, asta a funcționat pentru mine!

Azamat Azamat
10 feb. 2022 01:21:28

Mulțumesc foarte mult! Am creat un plugin WordPress pentru a controla MU plugin-ul direct din panoul de administrare.

volkerschulz volkerschulz
30 oct. 2023 11:16:45
4

După cum a menționat mmm:

în ce fișier apare prima notificare?

Oriunde este menționată locația acestei funcții învechite (calea/către/un/fișier.php), poți insera următoarele imediat după eticheta <?php care începe fișierul:

error_reporting(0);

Am încercat funcțiile menționate mai sus și le-am introdus în fișierul meu wp-config.php când am întâmpinat o situație similară, dar nu au funcționat pentru mine. Această soluție va dezactiva avertismentele, notificările despre funcții învechite și orice altceva în afară de erorile propriu-zise.

16 sept. 2016 17:14:58
Comentarii

Interesant (adică evidențiind superficialitatea înțelegerii mele, inserând error_reporting(0); (sau orice altă variație) în primul dintre fișierele menționate în lunga listă de mesaje de eroare, suprima toate mesajele din fișierele ulterioare diferite, dar nu și notificarea de depreciere din acel fișier.

Chris Pink Chris Pink
18 sept. 2016 13:04:25

@ChrisPink Nu înțeleg pe deplin ultimul tău comentariu, poți să clarifici, te rog?

Ethan Rævan Ethan Rævan
18 sept. 2016 17:33:38

Îmi pare rău, nu m-am exprimat foarte bine. Inserând error_reporting(0) în fișierul ot-loader.php (conform mesajului din OP) am suprimat toate notificările ulterioare, dar nu pe cea care provine din ot-loader.php (cea din OP). Așadar, presupun că trebuie să inserez funcția error_reporting() în fișierul care apelează ot-loader.php.

Chris Pink Chris Pink
20 sept. 2016 10:35:32

@ChrisPink Da, inserează acel cod în ot-loader.php.

Ethan Rævan Ethan Rævan
20 sept. 2016 20:50:50
2

Aceasta este probabil cea mai "WordPress" metodă de a face acest lucru.

Codul TREBUIE să fie plasat în fișierul wp-config, după definirea WP_DEBUG (și orice alte definiții) deoarece acest filtru specific rulează înainte de încărcarea oricăror plugin-uri.

$GLOBALS['wp_filter'] = array(
'enable_wp_debug_mode_checks' => array(
    10 => array(
        array(
            'accepted_args' => 0,
            'function'      => function () {
                if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
                    // *** Aceasta este linia cheie - modificați pentru a ajusta la starea de logging dorită
                    error_reporting( E_ALL & ~E_DEPRECATED );

                    ini_set( 'display_errors', defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG_DISPLAY ? 1 : 0 );

                    if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) {
                        $log_path = WP_CONTENT_DIR . '/debug.log';
                    } elseif ( is_string( WP_DEBUG_LOG ) ) {
                        $log_path = WP_DEBUG_LOG;
                    } else {
                        $log_path = false;
                    }

                    if ( $log_path ) {
                        ini_set( 'log_errors', 1 );
                        ini_set( 'error_log', $log_path );
                    }

                    if (
                        defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || defined( 'MS_FILES_REQUEST' ) ||
                        ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) ||
                        wp_doing_ajax() || wp_is_json_request() ) {
                        ini_set( 'display_errors', 0 );
                    }
                }

                return false;
            },
        ),
    ),
));
27 ian. 2023 18:26:28
Comentarii

De ce înainte de încărcarea oricăror plugin-uri? Avertismentele de depreciere provin din temă.

Rup Rup
3 feb. 2023 14:46:28

Aceasta mi-a dat eroarea " Fatal error: Call to undefined function wp_is_json_request() in /var/www/html/wp-config.php on line 111", comentând acea parte a verificării a funcționat (rețineți că aceasta este într-o instalare WordPress veche)

Ferrybig Ferrybig
24 mar. 2023 10:27:43
0

se pare că multe plugin-uri modifică și această valoare, așa că am avut noroc cu aceste două abordări,

// încercând să fiu ultima persoană care setează această valoare
add_action('wp_loaded', function() { error_reporting( E_ALL & ~E_NOTICE ); 
});

// chiar mai târziu, dar nu prea târziu
add_action('wp', function() { error_reporting( E_ALL & ~E_NOTICE ); 
});

20 oct. 2023 19:05:15
1

Cu următorul cod poți elimina mesajele de depreciere din setările curente de raportare a erorilor. Adăugând acest cod în fișierul functions.php al temei tale, vei ascunde toate erorile de depreciere.

error_reporting(error_reporting() & ~E_DEPRECATED);
30 nov. 2023 14:10:39
Comentarii

Mulțumesc! Dintre toate abordările sugerate din 2016, aceasta a funcționat imediat

Eric Hepperle - CodeSlayer2010 Eric Hepperle - CodeSlayer2010
1 mai 2024 23:05:35
0

Puteți face astfel, încât să puteți continua să depanați când este necesar:

Exemplu (plasați în fișierul functions.php al temei):

add_action('wp_loaded', function() { 
    if(WP_DEBUG==false){
        // forțează dezactivarea raportării erorilor
        error_reporting(0);
    }else {
        if(WP_DEBUG==true){
            // forțează propriile reguli
            error_reporting(E_ALL & ~E_WARNING & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_NOTICE);
        }
    }
});
26 ian. 2025 04:39:11