PHP 7.2更新:标头中的DropDown警告声明

时间:2019-03-18 10:01:39

标签: php wordpress warnings

我只是在我的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);
    }
}

我试图解决问题,但没有解决,您有想法吗?

1 个答案:

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