오류 : MyClass :: start_lvl () 선언은 Walker_Nav_Menu :: start_lvl () 선언과 호환 가능해야합니다.


11

현재 WordPress 사이트에서 작업 중이며 관리자가 Appearance> Menus 페이지로 이동할 때마다 다음 오류가 발생합니다.

ErrorException : 런타임 알림 : Walker_Nav_Menu_Edit :: start_lvl () 선언은 wp-admin / includes / nav-menu.php 줄 203의 Walker_Nav_Menu :: start_lvl () 선언과 호환 가능해야합니다.

일종의 PHP 호환성 문제처럼 보입니다. 로컬 개발 컴퓨터에서 PHP 5.3.10을 실행하고 있습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변:


24

보낸 사람 class Walker_Nav_Menu:

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

자녀 클래스 동일한 서명을 사용해야합니다. 세 개의 인수, 첫 번째는 참조로 전달됩니다. 모든 차이는 당신이 얻은 오류를 제기합니다.

참고 $args빈 배열에 기본값을,하지만 당신은의 인스턴스를 얻을 stdClass하지 배열을. 워드 프레스입니다.


알아. WordPress 클래스이므로 변경하지 않습니다. 내 질문은 ... (바람직하게는 WP의 내부에 간섭하지 않고) 문제를 해결할 수있는 가장 좋은 방법입니다 것입니다
누가 복음

3
워드 프레스 코어와 혼동하라는 메시지가 표시되지 않습니다. WordPress가 원래 클래스에서 수행하는 방식과 일치하도록 확장 클래스에서 메소드를 정의하는 방식을 변경해야합니다.
s_ha_dum

1
알았다. 오류가 나를 버렸습니다. 문제가 WP 코어에 있다는 인상을 주었지만 문제가 발생한 곳이 아니라 서명의 정의를 언급하고 있습니다.
Luke

9

수업 Walker_Nav_Menu에서이 줄을 바꿉니다.

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()) {

코드를 추가하는 대신 작동 방식과 허용되는 답변과 어떻게 다른지 설명 할 수 있습니까
bravokeyl

예; 이 답변은 2015 년에 업데이트되었으며 새 버전의 Wordpress 링크
Mohammad Abedi

예, 답변에 대한 설명은 훌륭합니다.
bravokeyl

이 기능은 start_el, end_el 함수, start_lvl 함수, end_lvl 함수
Stephen

우리는 어디에서 또는 어떻게 Walker_Nav_Menu 클래스로 이동합니까? 어떻게 또는 어디에서 선택되는지 모르겠습니다 !!!!!
riemannium

0

제 경우도 마찬가지입니다. 오래된 탐색 메뉴 워커 코드가 표시되며 wp_debug (true)를 켤 때 수행해야 할 작업이 표시됩니다.

Menu_Frontend :: start_lvl (& $ output, $ depth)은 C : \ xampp \ htdocs \ shopnet \ wp-content \ themes에서 Walker_Nav_Menu :: start_lvl (& $ output, $ depth = 0, $ args = NULL)과 호환되어야합니다. 314 행의 \ Viteeo \ hades_framework \ helper \ megamenu.php

보시다시피 PHP가 말하는 코드 라인을 변경해야합니다. 위의 오류 통지에서 start_lvl (& $ output, $ depth)을 start_lvl (& $ output, $ depth = 0, $ args = NULL)로 바꾸어야 다른 프로세스가 동일합니다. 그러나 마지막에 함수 열기 태그 {를 작성하는 것을 잊지 마십시오.이 NULL과 같이) {

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.