$Item->url未在自定义查看器中检索url?

时间:2012-03-30 作者:javy

我制作了一个自定义的walker,用于wp\\u list\\u页面,修改输出以显示缩略图。目标是在页面模板中显示一个列表,其中列出了所有子级及其子级。

我下面的walker似乎可以获取缩略图和页面标题,但无法获取页面的url。我是否需要使用get带前缀的函数,而不是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 个回复
最合适的回答,由SO网友:javy 整理而成

找到答案-如果其他人遇到类似问题:

要扩展的正确walker是walker\\u页面,而不是walker\\u Nav\\u菜单。

Walker\\u页面位于/wp includes/post模板中。php(第978行)。

结束