Suprimarea notificărilor depreciate
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 369Strict Standards: Declarația
DropDown_Nav_Menu::start_lvl()
ar trebui să fie compatibilă cuWalker_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
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);
?>

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

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.

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.

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

Î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.

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;
},
),
),
));

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

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 );
});

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);
}
}
});
