Hata: MyClass :: start_lvl () bildirimi Walker_Nav_Menu :: start_lvl () ile uyumlu olmalıdır


11

Şu anda bir WordPress sitesinde çalışıyorum ve yönetici olduğunda Görünüm> Menüler sayfasına gidiyorum aşağıdaki hatayı alıyorum:

ErrorException: Çalışma Zamanı Bildirimi: Walker_Nav_Menu_Edit :: start_lvl () bildirimi, wp-admin / include / nav-menu.php satır 203'teki Walker_Nav_Menu :: start_lvl () ile uyumlu olmalıdır.

Bir çeşit PHP uyumluluk sorunu gibi görünüyor. Yerel geliştirici makinemde PHP 5.3.10 kullanıyorum.

Bu sorunu çözmenin en iyi yolu ne olurdu?

Yanıtlar:


24

Gönderen class Walker_Nav_Menu:

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

Çocuğunuz sınıf gerekir üç argüman, başvuruyla geçirildi İlki: Aynı imzayı kullanmaktadır. Her fark, aldığınız hatayı artıracaktır.

Not $argsboş bir dizi olarak varsayılan, ancak bir örneğini almak stdClassdeğil, bir dizi. Bu WordPress.


Biliyorum. Bu bir WordPress sınıfı, değiştirmek benim için değil. Sorum şu soruna geçici bir çözüm bulmak için en iyi yol nedir (tercihen WP'nin içselleriyle uğraşmadan) ...
Luke

3
WordPress çekirdeğini karıştırmanız istenmiyor. Genişletilmiş sınıfınızda yönteminizi tanımlama şeklinizi, WordPress'in özgün sınıfta yaptığı gibi eşleştirmeniz gerekir.
s_ha_dum

1
Anladım. Hata beni atıyordu. Bana sorunun WP çekirdeğinde olduğu izlenimini verdi, ancak sorunun nerede oluştuğuna değil, imzanın tanımına atıfta bulunuyor.
Luke

9

Sınıftan itibaren Walker_Nav_Menubu satırların yerine

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

için

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

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

için

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

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

için

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

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

için

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

Sadece kodu eklemek yerine nasıl çalıştığını ve kabul edilen cevaptan nasıl farklı olduğunu da açıklayabilir misiniz
bravokeyl

Evet; Cevap 2015 yılında güncellenir ve Wordpress bağlantısının
Mohammad Abedi

Evet, cevabın açıklaması harika olurdu.
bravokeyl

Bu, ass_elv, function end_el, function start_lvl, function end_lvl için 4 hata mesajınız varsa, kesinlikle doğru cevabı kurtardı
Stephen

Nereye veya nasıl Walker_Nav_Menu sınıfına gidiyoruz ??? Nasıl veya nerede seçildiğini bilmiyorum !!!!!
riemannium

0

Benim durumumda da aynıydı. Eski gezinme menüsü yürüteç kodlarını alıyorsunuz ve wp_debug'u açtığınızda ne yapmanız gerektiğini söylüyor (true)

Menu_Frontend :: start_lvl (& $ çıktı, $ derinlik) C: \ xampp \ htdocs \ shopnet \ wp-content \ themes içindeki Walker_Nav_Menu :: start_lvl (& $ output, $ derinlik = 0, $ args = NULL) ile uyumlu olmalıdır 314 satırında \ Viteeo \ hades_framework \ helper \ megamenu.php

Gördüğünüz gibi PHP'nin size ifade ettiği bazı kod satırını değiştirmeniz gerekiyor. Yukarıdaki hata bildiriminde, start_lvl (& $ çıktı, $ derinlik) yerine start_lvl (& $ çıktı, $ derinlik = 0, $ args = NULL) koymalısınız, böylece diğer işlemler aynı olur. Ancak, işlev açılış etiketini yazmayı unutmayın (sonunda, bu NULL gibi) {

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.