質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

WordPress サーバのPHPバージョンを5から7にあげた際に出たエラー

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 424

ichigob

score 27

WordPressでサーバの PHP のバージョンを5から7にあげた際に出たエラーがでました。

サーバーはXサーバーです。

エラーはこちらです。

Warning: Declaration of The_Bootstrap_Nav_Walker::start_lvl(&$output, $depth) should be compatible with Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = Array) in /home/ichigo/example.com/public_html/wp-content/themes/the-bootstrap/inc/nav-menu-walker.php on line 0
Warning: Declaration of The_Bootstrap_Nav_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /home/ichigo/example.com/public_html/wp-content/themes/the-bootstrap/inc/nav-menu-walker.php on line 0

サイト自体は見えています。

エラーが出ているnav-menu-walker.phpの中身を添付しています。

何を改善したらよろしいでしょうか。

<?php
/** nav-menu-walker.php
 *
 * @author        Konstantin Obenland
 * @package        The Bootstrap
 * @since        1.5.0 - 15.05.2012
 */

class The_Bootstrap_Nav_Walker extends Walker_Nav_Menu {

    /**
     * @see Walker_Nav_Menu::start_lvl()
     */
    function start_lvl( &$output, $depth ) {
        $output .= "\n<ul class=\"dropdown-menu\">\n";
    }

    /**
     * @see Walker_Nav_Menu::start_el()
     */
    function start_el( &$output, $item, $depth, $args ) {
        global $wp_query;

        $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
        $li_attributes = $class_names = $value = '';
        $classes = empty( $item->classes ) ? array() : (array) $item->classes;
        $classes[] = 'menu-item-' . $item->ID;

        if ( $args->has_children ) {
            $classes[] = ( 1 > $depth) ? 'dropdown': 'dropdown-submenu';
            $li_attributes .= ' data-dropdown="dropdown"';
        }

        $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
        $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';

        $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
        $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';

        $output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>';

        $attributes    =    $item->attr_title    ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
        $attributes    .=    $item->target        ? ' target="' . esc_attr( $item->target     ) .'"' : '';
        $attributes    .=    $item->xfn            ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
        $attributes    .=    $item->url            ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
        $attributes    .=    $args->has_children    ? ' class="dropdown-toggle" data-toggle="dropdown"' : '';

        $item_output    =    $args->before . '<a' . $attributes . '>';
        $item_output    .=    $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
        $item_output    .=    ( $args->has_children AND 1 > $depth ) ? ' <b class="caret"></b>' : '';
        $item_output    .=    '</a>' . $args->after;

        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }

    /**
     * @see Walker::display_element()
     */
    function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) {

        if ( ! $element )
            return;

        $id_field = $this->db_fields['id'];

        //display this element
        if ( is_array( $args[0] ) )
            $args[0]['has_children'] = (bool) ( ! empty( $children_elements[$element->$id_field] ) AND $depth != $max_depth - 1 );
        elseif ( is_object(  $args[0] ) )
            $args[0]->has_children = (bool) ( ! empty( $children_elements[$element->$id_field] ) AND $depth != $max_depth - 1 );

        $cb_args = array_merge( array( &$output, $element, $depth ), $args );
        call_user_func_array( array( &$this, 'start_el' ), $cb_args );

        $id = $element->$id_field;

        // descend only when the depth is right and there are childrens for this element
        if ( ( $max_depth == 0 OR $max_depth > $depth+1 ) AND isset( $children_elements[$id] ) ) {

            foreach ( $children_elements[ $id ] as $child ) {

                if ( ! isset( $newlevel ) ) {
                    $newlevel = true;
                    //start the child delimiter
                    $cb_args = array_merge( array( &$output, $depth ), $args );
                    call_user_func_array( array( &$this, 'start_lvl' ), $cb_args );
                }
                $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
            }
            unset( $children_elements[ $id ] );
        }

        if ( isset( $newlevel ) AND $newlevel ) {
            //end the child delimiter
            $cb_args = array_merge( array( &$output, $depth ), $args );
            call_user_func_array( array( &$this, 'end_lvl' ), $cb_args );
        }

        //end this element
        $cb_args = array_merge( array( &$output, $element, $depth ), $args );
        call_user_func_array( array( &$this, 'end_el' ), $cb_args );
    }
}


/**
 * Adds the active CSS class
 *
 * @author    Konstantin Obenland
 * @since    1.5.0 - 15.05.2012
 *
 * @param    array    $classes    Default class names
 *
 * @return    array
 */
function the_bootstrap_nav_menu_css_class( $classes ) {
    if ( in_array('current-menu-item', $classes ) OR in_array( 'current-menu-ancestor', $classes ) )
        $classes[]    =    'active';

    return $classes;
}
add_filter( 'nav_menu_css_class', 'the_bootstrap_nav_menu_css_class' );


/* End of file nav-menu-walker.php */
/* Location: ./wp-content/themes/the-bootstrap/inc/nav-menu-walker.php */
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ichigob

    2019/12/13 13:04

    そうなんですね

    キャンセル

  • ichigob

    2019/12/13 13:06

    example.com に変更しました!
    ありがとうございます。

    キャンセル

  • ichigob

    2019/12/13 13:07

    asahina1979様のコメントのURLも念のため変更いただけませんでしょうかー。

    キャンセル

回答 1

-1

継承してオーバーライドしているが、親と定義が違うよってエラー 

引数の型、個数を合わせましょう

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/12/13 11:33

    どの辺りを修正したらいいでしょうか?

    キャンセル

  • 2019/12/13 12:19

    基本、この警告は表示されているものを修正しましょう

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる