Walker类菜单项

时间:2017-02-07 07:56:13

标签: wordpress

我正试图了解

 $classes = empty( $item->classes ) ? array() : (array) $item->classes;
                                $classes[] = 'menu-item-' . $item->ID;

我正在尝试控制菜单项上的课程。我不确定其他课程细节的来源。我也不明白(array)$ item->类的含义。

这导致

<li id="menu-item-11" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-6 current_page_item menu-item-11"><a href="##">Service</a></li>

有人可以解释一下吗?

                                    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
                                    if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
                                        $t = '';
                                        $n = '';
                                    } else {
                                        $t = "\t";
                                        $n = "\n";
                                    }
                                    $indent = ( $depth ) ? str_repeat( $t, $depth ) : '';

                                    $classes = empty( $item->classes ) ? array() : (array) $item->classes;
                                    $classes[] = 'menu-item-' . $item->ID;


                                    $item -> description = get_post_meta( $item->ID, '_menu_item_field-description', true );


                                    /**
                                     * Filters the arguments for a single nav menu item.
                                     *
                                     * @since 4.4.0
                                     *
                                     * @param stdClass $args  An object of wp_nav_menu() arguments.
                                     * @param WP_Post  $item  Menu item data object.
                                     * @param int      $depth Depth of menu item. Used for padding.

                                    $args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
    */


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

                                /**
                                 * Filters the ID applied to a menu item's list item element.
                                 *
                                 * @since 3.0.1
                                 * @since 4.1.0 The `$depth` parameter was added.
                                 *
                                 * @param string   $menu_id The ID that is applied to the menu item's `<li>` element.
                                 * @param WP_Post  $item    The current menu item.
                                 * @param stdClass $args    An object of wp_nav_menu() arguments.
                                 * @param int      $depth   Depth of menu item. Used for padding.
                                 **/


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

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

                                $atts = array();
                                $atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
                                $atts['target'] = ! empty( $item->target )     ? $item->target     : '';
                                $atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';
                                $atts['href']   = ! empty( $item->url )        ? $item->url        : '';

                                /**
                                 * Filters the HTML attributes applied to a menu item's anchor element.
                                 *
                                 * @since 3.6.0
                                 * @since 4.1.0 The `$depth` parameter was added.
                                 *
                                 * @param array $atts {
                                 *     The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored.
                                 *
                                 *     @type string $title  Title attribute.
                                 *     @type string $target Target attribute.
                                 *     @type string $rel    The rel attribute.
                                 *     @type string $href   The href attribute.
                                 * }
                                 * @param WP_Post  $item  The current menu item.
                                 * @param stdClass $args  An object of wp_nav_menu() arguments.
                                 * @param int      $depth Depth of menu item. Used for padding.
                                 **/
                                $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );

                                $attributes = '';
                                foreach ( $atts as $attr => $value ) {
                                    if ( ! empty( $value ) ) {
                                        $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
                                        $attributes .= ' ' . $attr . '="' . $value . '"';
                                    }
                                }

                                /** This filter is documented in wp-includes/post-template.php */

                                $title = apply_filters( 'the_title', $item->title, $item->ID );

                                /**
                                 * Filters a menu item's title.
                                 *
                                 * @since 4.4.0
                                 *
                                 * @param string   $title The menu item's title.
                                 * @param WP_Post  $item  The current menu item.
                                 * @param stdClass $args  An object of wp_nav_menu() arguments.
                                 * @param int      $depth Depth of menu item. Used for padding.
                                 */


                                $title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );

                                $item_output = $args->before;
                                $item_output .= '<a'. $attributes .'>';
                                $item_output .= $args->link_before . $title . $args->link_after;
                                $item_output .= '</a>';
                                $item_output .= $args->after;

                                /**
                                 * Filters a menu item's starting output.
                                 *
                                 * The menu item's starting output only includes `$args->before`, the opening `<a>`,
                                 * the menu item's title, the closing `</a>`, and `$args->after`. Currently, there is
                                 * no filter for modifying the opening and closing `<li>` for a menu item.
                                 *
                                 * @since 3.0.0
                                 *
                                 * @param string   $item_output The menu item's starting HTML output.
                                 * @param WP_Post  $item        Menu item data object.
                                 * @param int      $depth       Depth of menu item. Used for padding.
                                 * @param stdClass $args        An object of wp_nav_menu() arguments.
                                 */

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


                            }

0 个答案:

没有答案