Walker_Nav_Menu的功能问题

时间:2019-01-24 作者:Henry Bagilhole

我在更新到PHP 7.2后收到此警告,有人能帮我解决吗?

警告:foundation\\u navigation的声明::start\\u lvl(&;$output,$depth)应与Walker\\u Nav\\u菜单::start\\u lvl(&;$output,$depth=0,$args=Array)在/nas/content/staging/arnoldhill/wp content/themes/arnoldhill/functions中兼容。php在线121

函数当前是这样编写的

// Add class to navigation sub-menu
class foundation_navigation extends Walker_Nav_Menu {

function start_lvl(&$output, $depth) {
    $indent = str_repeat("\\t", $depth);
    $output .= "\\n$indent<ul class=\\"flyout\\">\\n";
}

function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
    $id_field = $this->db_fields[\'id\'];
    if ( !empty( $children_elements[ $element->$id_field ] ) ) {
        $element->classes[] = \'has-flyout\';
    }
        Walker_Nav_Menu::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }
}
谢谢

亨利

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

如你所见here, 此函数的声明如下所示:

public function start_lvl( &$output, $depth = 0, $args = array() ) {
因此,在您的类中,它应该看起来相同-它应该有3个参数。但在您的代码中,它只有2个:

function start_lvl(&$output, $depth) {
还有。。。您不应该更改该函数的可见性,所以它也应该是公共的。

因此,您应该更改代码,使其如下所示:

...
public function start_lvl( &$output, $depth = 0, $args = array() ) {
    $indent = str_repeat("\\t", $depth);
    $output .= "\\n$indent<ul class=\\"flyout\\">\\n";
}
...