web-dev-qa-db-ja.com

エラー:MyClass :: start_lvl()の宣言は、Walker_Nav_Menu :: start_lvl()の宣言と互換性があるはずです。

私は現在WordPressサイトに取り組んでいますが、管理者が[表示]> [メニュー]ページに移動するたびに、次のようなエラーメッセージが表示されます。

ErrorException:ランタイム通知:wp-admin/includes/nav-menu.php行のWalker_Nav_Menu_Edit :: start_lvl()の宣言は、Walker_Nav_Menu :: start_lvl()の宣言と互換性があるはずです

ある種のPHP互換性の問題のようです。私は私のローカル開発マシンでPHP 5.3.10を実行しています。

この問題を解決するための最善の方法は何でしょうか。

8
Luke

class Walker_Nav_Menuから:

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

あなたの子クラスmustは同じシグネチャを使います:3つの引数、最初のものは参照渡しです。違いがあると、エラーが発生します。

$argsはデフォルトで空の配列になりますが、配列ではなくstdClassのインスタンスを取得します。これがWordPressです。

22
fuxia

クラス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()) {
5
Mohammad Abedi