web-dev-qa-db-ja.com

親ページを最初のサブページにのみリンクする

最初のサブページがある場合は、その親ページへのリンクを自動的に作成します。そのようです:

  • 親1(/#subpage-1)
    • サブページ1(/#サブページ-1)
    • サブページ2(/#サブページ-2)
    • サブページ3(/#サブページ3)
  • 親2(/親2)
  • 親3(/親3)

私は、複雑なnav()ウォーカーを介してすべての親リンクを見つけるコードを見つけました。ここから最初の子供のURLを見つける方法がわかりません。私はそれがだろうと仮定した

$children_elements[0]->url

しかしそうではないようです。

class Themeslug_Page_Navigation_Walker extends Walker_Nav_Menu {
    function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
        $id_field = $this->db_fields['id'];
        if ( !empty( $children_elements[ $element->$id_field ] ) ) {
            $element->url = "Where do I get the child URL?";
        }
        Walker_Nav_Menu::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }
}
1
Tom
class Themeslug_Page_Navigation_Walker extends Walker_Nav_Menu {
    function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
        $id_field = $this->db_fields['id'];
        if ( !empty( $children_elements[ $element->$id_field ] ) ) {
            $element->url = $children_elements[$element->$id_field][0]->url;
        }
        Walker_Nav_Menu::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }
}

これでうまくいきました。

1
Tom