web-dev-qa-db-fra.com

Erreur: la déclaration de MyClass :: start_lvl () doit être compatible avec celle de Walker_Nav_Menu :: start_lvl ()

Je travaille actuellement sur un site WordPress et chaque fois que je vais dans la page Apparence> Menus de l'administrateur, le message d'erreur suivant s'affiche:

ErrorException: Notice d'exécution: la déclaration de Walker_Nav_Menu_Edit :: start_lvl () doit être compatible avec celle de Walker_Nav_Menu :: start_lvl () dans la ligne wp-admin/includes/nav-menu.php

Cela ressemble à une sorte de problème de compatibilité PHP. J'utilise PHP 5.3.10 sur ma machine de développement locale.

Quel serait le meilleur moyen de remédier à ce problème?

8
Luke

De class Walker_Nav_Menu:

function start_lvl( &$output, $depth = 0, $args = array() )

Votre classe enfant doit utiliser la même signature: trois arguments, le premier passé par référence. Chaque différence soulèvera l'erreur que vous avez.

Notez que $args utilise par défaut un tableau vide, mais vous obtenez une instance de stdClass, pas un tableau. C'est WordPress.

22
fuxia

À partir de la classe Walker_Nav_Menu, remplacez ces lignes

function start_el(&$output, $category, $depth, $args) {

à

function start_el(&$output, $category, $depth = 0, $args = array(), $current_object_id = 0) {

function end_lvl(&$output, $depth, $args) {

à

function end_lvl(&$output, $depth = 0, $args = array()) {

function start_lvl(&$output, $depth, $args) {

à

function start_lvl(&$output, $depth = 0, $args = array()) {

function end_el(&$output, $category, $depth, $args) {

à

function end_el(&$output, $category, $depth = 0, $args = array()) {
5
Mohammad Abedi