Обновление PHP 7.2: Предупреждение о объявлении DropDown в шапке - PullRequest
0 голосов
/ 18 марта 2019

Я просто обновляюсь до php 7.2 в моей учетной записи 1and1.Так как у меня есть эти предупреждения в заголовке моего сайта WordPress:

Предупреждение: объявление DropDown_Nav_Menu :: start_lvl (& $ output, $ deep) должно быть совместимо с Walker_Nav_Menu :: start_lvl (& $выходные данные, $ глубина = 0, $ args = Array) в /homepages/42/d459723492/htdocs/com/wp-content/themes/bluediamond-v1_02/include/plugin/dropdown-menus.php в строке 173

Предупреждение: объявление DropDown_Nav_Menu :: end_lvl (& $ output, $ deep) должно быть совместимо с Walker_Nav_Menu :: end_lvl (& $ output, $ deep = 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 (& вывод $, $ item, $ глубина,$ args) должен быть совместим с Walker_Nav_Menu :: start_el (& $ output, $ item, $ deep = 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, $ deep) должно быть совместимо с Walker_Nav_Menu :: end_el (& $ output, $ item, $ deep = 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 голосов
/ 18 марта 2019

Ваши методы в дочернем классе должны иметь ту же структуру, что и родительские, включая значения по умолчанию.

Вы можете дважды проверить, как выглядит источник 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() ) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...