我只是在我的1and1帐户上更新到php 7.2。从那以后,我在wordpress网站的标题上有这些警告:
警告:DropDown_Nav_Menu :: start_lvl(&$ output,$ depth)的声明 应该与Walker_Nav_Menu :: start_lvl(&$ output,$ depth = / 0,$ args =数组)在/homepages/42/d459723492/htdocs/com/wp-content/themes/bluediamond-v1_02/include/plugin/dropdown-menus.php中 在第173行
警告:DropDown_Nav_Menu :: end_lvl(&$ output,$ depth)的声明 应该与Walker_Nav_Menu :: end_lvl(&$ output,$ depth = 0,$ args = Array)在 /homepages/42/d459723492/htdocs/com/wp-content/themes/bluediamond-v1_02/include/plugin/dropdown-menus.php 在第173行
警告:DropDown_Nav_Menu :: start_el(&$ output,$ item, $ depth,$ args)应该与 Walker_Nav_Menu :: start_el(&$ output,$ item,$ depth = 0,$ args = Array, $ id = 0)在 /homepages/42/d459723492/htdocs/com/wp-content/themes/bluediamond-v1_02/include/plugin/dropdown-menus.php 在第173行
警告:DropDown_Nav_Menu :: end_el(&$ output,$ item, $ depth)应该与Walker_Nav_Menu :: end_el(&$ output, $ item,$ depth = 0,$ args = Array) /homepages/42/d459723492/htdocs/com/wp-content/themes/bluediamond-v1_02/include/plugin/dropdown-menus.php 在第173行
这里是功能:
function start_el( &$output, $item, $depth, $args ) {
global $wp_query;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'menu-item-' . $item->ID;
$classes[] = 'menu-item-depth-' . $depth;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_unique( array_filter( $classes ) ), $item, $args ) );
$class_names = ' class="' . esc_attr( $class_names ) . '"';
// select current item
$selected = in_array( 'current-menu-item', $classes ) ? ' selected="selected"' : '';
$output .= $indent . '<option' . $class_names .' value="'. $item->url .'"'. $selected .'>';
// push sub-menu items in as we can't nest optgroups
$indent_string = str_repeat( apply_filters( 'dropdown_menus_indent_string', $args->indent_string, $item, $depth, $args ), ( $depth ) ? $depth : 0 );
$indent_string .= !empty( $indent_string ) ? apply_filters( 'dropdown_menus_indent_after', $args->indent_after, $item, $depth, $args ) : '';
$item_output = $args->before . $indent_string;
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_dropdown_start_el', $item_output, $item, $depth, $args );
}
/**
* @see Walker::end_el()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param object $item Page data object. Not used.
* @param int $depth Depth of page. Not Used.
*/
function end_el( &$output, $item, $depth ) {
$output .= apply_filters( 'walker_nav_menu_dropdown_end_el', "</option>\n", $item, $depth);
}
}
我试图解决问题,但没有解决,您有想法吗?
答案 0 :(得分:0)
您的子类中的方法应具有与父类完全相同的结构,包括默认值。
您可以再次检查Walker_Nav_Menu源在WordPress核心-https://developer.wordpress.org/reference/classes/walker_nav_menu/中的样子。
在您的情况下,您需要更改两件事:
function start_el( &$output, $item, $depth, $args ) {
到
function start_el( &$output, $depth = 0, $args = array() ) {
和其他应替换的内容:
function end_el( &$output, $item, $depth ) {
到
function end_el( &$output, $depth = 0, $args = array() ) {