web-dev-qa-db-fra.com

$ item-> url ne récupère pas l'URL dans le programme personnalisé?

J'ai créé un programme de navigation personnalisé à utiliser avec wp_list_pages pour modifier le résultat afin d'afficher des vignettes. L'objectif est de faire apparaître une liste dans un modèle de page, qui répertorie tous les enfants avec leurs enfants.

Le marcheur que j'ai ci-dessous semble fonctionner pour obtenir la vignette et le titre de la page, mais ne contient pas l'URL de la page. Dois-je utiliser d'une manière ou d'une autre une fonction getprefixed au lieu de esc_attr?

            class bio_walker extends Walker_Nav_Menu
            {

            function start_el(&$output, $item, $depth, $args)
            {


            $output .= "<li id='menu-item-$item->ID' class='bio-list'>";

            $attributes  = "class='highlight-$item->ID'";

            ! empty( $item->attr_title )
                and $attributes .= ' title="'  . esc_attr( $item->attr_title ) .'"';
            ! empty( $item->target )
                and $attributes .= ' target="' . esc_attr( $item->target     ) .'"';
            ! empty( $item->xfn )
                and $attributes .= ' rel="'    . esc_attr( $item->xfn        ) .'"';
            ! empty( $item->url )
                and $attributes .= ' href="'   . esc_attr( $item->url        ) .'"';


            $pageid = get_post_meta ( $item->ID, '_menu_item_object_id', true);
            $thumbnail = get_the_post_thumbnail( $item->ID, 'bio-thumb', true);


            $title = get_the_title($item->ID);

            $spanclass = "class='span-$item->ID bio-list-span'";

            $item_output = $args->before
                . "<a $attributes>"
                . $thumbnail
                . "<span $spanclass>"
                . $title
                . $pageid
                . "</span>"
                . '</a> ';

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

compris au cas où quelqu'un d’autre trébucherait avec une question similaire:

Le Walker approprié à étendre est Walker_Page, pas Walker_Nav_Menu.

Walker_page se trouve dans /wp-includes/post-template.php (ligne 978).

1
javy