Lỗi: Khai báo MyClass :: start_lvl () phải tương thích với Walker_Nav_Mothy :: start_lvl ()


11

Tôi hiện đang làm việc trên một trang web WordPress và bất cứ khi nào trong quản trị viên, tôi vào trang Giao diện> Menu tôi gặp lỗi sau:

ErrorException: Runtime Thông báo: Khai báo Walker_Nav_Mothy_Edit :: start_lvl () phải tương thích với Walker_Nav_Mothy :: start_lvl () trong dòng wp-admin / gồm / nav-menu.php

Có vẻ như một số vấn đề tương thích PHP. Tôi đang chạy PHP 5.3.10 trên máy dev cục bộ của mình.

Điều gì sẽ là cách tốt nhất để khắc phục vấn đề này?

Câu trả lời:


24

Từ class Walker_Nav_Menu:

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

Lớp con của bạn phải sử dụng cùng một chữ ký: ba đối số, lần đầu tiên được truyền bằng tham chiếu. Mỗi sự khác biệt sẽ đưa ra lỗi bạn nhận được.

Lưu ý rằng $argsmặc định là một mảng trống, nhưng bạn có một thể hiện stdClasschứ không phải là một mảng. Đây là WordPress.


Tôi biết. Đó là một lớp WordPress, nó không phải để tôi thay đổi. Câu hỏi của tôi là cách tốt nhất để giải quyết vấn đề (tốt nhất là không can thiệp với nội bộ của WP) ...
Luke

3
Bạn không được yêu cầu can thiệp vào lõi WordPress. Bạn cần thay đổi cách bạn xác định phương thức của mình trong lớp mở rộng để phù hợp với cách WordPress thực hiện trong lớp gốc.
s_ha_dum

1
Hiểu rồi. Lỗi đã ném tôi đi. Nó cho tôi ấn tượng vấn đề nằm ở lõi WP nhưng nó đề cập đến định nghĩa của chữ ký, chứ không phải vấn đề xảy ra ở đâu.
Luke

8

Từ lớp Walker_Nav_Menuthay thế dòng này

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

đến

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

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

đến

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

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

đến

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

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

đến

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

Bạn cũng có thể giải thích cách nó hoạt động thay vì chỉ thêm mã và nó khác với câu trả lời được chấp nhận như thế nào
bravokeyl

Đúng; Câu trả lời được cập nhật vào năm 2015 và nó không hoạt động trên phiên bản mới của liên kết
Mohammad Abedi

Vâng, vì vậy giải thích về câu trả lời sẽ là tuyệt vời.
bravokeyl

Điều này đã lưu ass của tôi, chắc chắn là câu trả lời đúng nếu bạn có 4 thông báo lỗi, cho hàm start_el, hàm end_el, hàm start_lvl, hàm end_lvl
Stephen

Ở đâu hoặc làm thế nào chúng ta đi đến lớp Walker_Nav_Mothy ??? Tôi không biết nó được chọn như thế nào hay ở đâu !!!!!
riemannium

0

Trường hợp này cũng vậy. Bạn nhận được mã walker menu menu cũ và nó cho biết bạn nên làm gì khi bật wp_debug (true)

Menu_Frontend :: start_lvl (& $ output, $ height) phải tương thích với Walker_Nav_Mothy :: start_lvl (& $ output, $ height = 0, $ args = NULL) trong C: \ xampp \ htdocs \ shopnet \ wp-content \ \ Viteeo \ hades_framework \ helper \ megamothy.php trên dòng 314

Như bạn có thể thấy bạn cần thay đổi một số dòng mã mà PHP đề cập đến bạn. Trong thông báo lỗi ở trên, bạn nên thay thế start_lvl (& $ output, $ height) bằng start_lvl (& $ output, $ height = 0, $ args = NULL) để các quy trình khác giống nhau. Nhưng đừng quên ghi thẻ mở chức năng {ở cuối, như NULL này) {

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.