我在更新到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 );
}
}
谢谢
亨利
最合适的回答,由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";
}
...