Error: La declaración de MyClass::start_lvl() debe ser compatible con Walker_Nav_Menu::start_lvl()
Actualmente estoy trabajando en un sitio WordPress y cada vez que en el panel de administración voy a Apariencia > Menús obtengo el siguiente error:
ErrorException: Runtime Notice: La declaración de Walker_Nav_Menu_Edit::start_lvl() debe ser compatible con la de Walker_Nav_Menu::start_lvl() en wp-admin/includes/nav-menu.php línea 203
Parece ser algún tipo de problema de compatibilidad de PHP. Estoy ejecutando PHP 5.3.10 en mi máquina de desarrollo local.
¿Cuál sería la mejor manera de solucionar este problema?

Desde class Walker_Nav_Menu
:
function start_lvl( &$output, $depth = 0, $args = array() )
Tu clase hija debe usar la misma firma: tres argumentos, el primero pasado por referencia. Cualquier diferencia generará el error que obtuviste.
Nota que $args
tiene como valor predeterminado un array vacío, pero recibirás una instancia de stdClass
, no un array. Así funciona WordPress.

Lo sé. Es una clase de WordPress, no es algo que yo deba cambiar. Mi pregunta es cuál es la mejor manera de solucionar el problema (preferiblemente sin modificar los componentes internos de WP)...

No se te está pidiendo que modifiques el núcleo de WordPress. Necesitas cambiar la forma en que defines tu método en tu clase extendida para que coincida con la forma en que WordPress lo hace en la clase original.

Reemplazar estas líneas de la clase Walker_Nav_Menu
function start_el(&$output, $category, $depth, $args) {
por
function start_el(&$output, $category, $depth = 0, $args = array(), $current_object_id = 0) {
function end_lvl(&$output, $depth, $args) {
por
function end_lvl(&$output, $depth = 0, $args = array()) {
function start_lvl(&$output, $depth, $args) {
por
function start_lvl(&$output, $depth = 0, $args = array()) {
function end_el(&$output, $category, $depth, $args) {
por
function end_el(&$output, $category, $depth = 0, $args = array()) {

¿Podrías también explicar cómo funciona en lugar de solo agregar el código y en qué se diferencia de la respuesta aceptada?

Sí; La respuesta fue actualizada en 2015 y no funciona en la nueva versión de WordPress enlace

Esto me salvó el culo, definitivamente la respuesta correcta si tienes 4 mensajes de error, para la función start_el, función end_el, función start_lvl, función end_lvl

Esto fue lo mismo en mi caso. Obtienes códigos antiguos del walker del menú de navegación, y te indica lo que debes hacer cuando activas wp_debug(true).
Menu_Frontend::start_lvl(&$output, $depth) debe ser compatible con Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = NULL) en C:\xampp\htdocs\shopnet\wp-content\themes\Viteeo\hades_framework\helper\megamenu.php en la línea 314
Como puedes ver, necesitas cambiar alguna línea de código a la que PHP se refiere. En el aviso de error anterior, debes reemplazar start_lvl(&$output, $depth) con start_lvl(&$output, $depth = 0, $args = NULL) así que los demás procesos son los mismos. Pero no olvides escribir la etiqueta de apertura de la función { al final, así NULL) {
