0

<ul>タグ内の<li>タグ(つまり子<ul>)にクラスをアタッチしようとしています

これはWordpressメニュー用なので、Walker_Nav_Menu拡張機能の関数を作成し、コード内で呼び出す必要があります。

私はすでに子供がいる人にはクラスを付けることができます<li>が、その子供にもクラスを付ける必要があります。

私の現在のコードは以下のとおりで、動作します(擬似コードは別として):

class children_classes extends Walker_Nav_Menu {
    function display_element($element, &$children_elements, $max_depth, $depth, $args, &$output) {

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

    //If the current element has children, add class 'dropdown'
    if(isset($children_elements[$element->$id_field])) { 
        $classes = empty($element->classes) ? array() : (array) $element->classes;
        $classes[] = 'dropdown';
        $element->classes = $classes;

        // Pseudo-code
        Get child ul
          Attach class "dropdown-menu"
        // End psuedo-code
    }

    // We don't want to do anything at the 'top level'.
    if(0 == $depth)
        return parent::display_element($element, $children_elements, $max_depth, $depth, $args, $output);

    return parent::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
    }
}
4

1 に答える 1

0

これを Walker クラスに追加します。

function start_lvl(&$output, $depth)
{
    $indent = str_repeat("\t", $depth);
    $output .= "\n$indent<ul class='sub-menu custom-class'>\n";
}

これにより、デフォルトの start_lvl 関数がオーバーライドされ、必要に応じてクラスやその他の必要なものが追加されます。

于 2012-05-08T13:58:37.097 に答える