wp_setup_nav_menu_item() – Decorates a menu item object with the shared navigation menu item properties.

You appear to be a bot. Output may be restricted

Description

Decorates a menu item object with the shared navigation menu item properties.

Properties:

  • ID: The term_id if the menu item represents a taxonomy term.
  • attr_title: The title attribute of the link element for this menu item.
  • classes: The array of class attribute values for the link element of this menu item.
  • db_id: The DB ID of this item as a nav_menu_item object, if it exists (0 if it doesn't exist).
  • description: The description of this menu item.
  • menu_item_parent: The DB ID of the nav_menu_item that is this item's menu parent, if any. 0 otherwise.
  • object: The type of object originally represented, such as 'category', 'post', or 'attachment'.
  • object_id: The DB ID of the original object this menu item represents, e.g. ID for posts and term_id for categories.
  • post_parent: The DB ID of the original object's parent object, if any (0 otherwise).
  • post_title: A "no title" label if menu item represents a post that lacks a title.
  • target: The target attribute of the link element for this menu item.
  • title: The title of this menu item.
  • type: The family of objects originally represented, such as 'post_type' or 'taxonomy'.
  • type_label: The singular label used to describe this type of menu item.
  • url: The URL to which this menu item points.
  • xfn: The XFN relationship expressed in the link of this menu item.
  • _invalid: Whether the menu item represents an object that no longer exists.

Usage

$object = wp_setup_nav_menu_item( $menu_item );

Parameters

$menu_item
( object ) required – The menu item to modify.

Returns

object The menu item with standard menu item properties.

Source

File name: wordpress/wp-includes/nav-menu.php
Lines:

101 to 197 of 197
        }

        if ( '' === $original_title ) {
          /* translators: %d: ID of a term. */
          $original_title = sprintf( __( '#%d (no title)' ), $menu_item->object_id );
        }

        $menu_item->title = ( '' === $menu_item->post_title ) ? $original_title : $menu_item->post_title;

      } else {
        $menu_item->type_label = __( 'Custom Link' );
        $menu_item->title      = $menu_item->post_title;
        $menu_item->url        = ! isset( $menu_item->url ) ? get_post_meta( $menu_item->ID, '_menu_item_url', true ) : $menu_item->url;
      }

      $menu_item->target = ! isset( $menu_item->target ) ? get_post_meta( $menu_item->ID, '_menu_item_target', true ) : $menu_item->target;

      
/**
 * Filters a navigation menu item's title attribute.
 *
 * @since 3.0.0
 *
 * @param string $item_title The menu item title attribute.
 */
      $menu_item->attr_title = ! isset( $menu_item->attr_title ) ? apply_filters( 'nav_menu_attr_title', $menu_item->post_excerpt ) : $menu_item->attr_title;

      if ( ! isset( $menu_item->description ) ) {
        
/**
 * Filters a navigation menu item's description.
 *
 * @since 3.0.0
 *
 * @param string $description The menu item description.
 */
        $menu_item->description = apply_filters( 'nav_menu_description', wp_trim_words( $menu_item->post_content, 200 ) );
      }

      $menu_item->classes = ! isset( $menu_item->classes ) ? (array) get_post_meta( $menu_item->ID, '_menu_item_classes', true ) : $menu_item->classes;
      $menu_item->xfn     = ! isset( $menu_item->xfn ) ? get_post_meta( $menu_item->ID, '_menu_item_xfn', true ) : $menu_item->xfn;
    } else {
      $menu_item->db_id            = 0;
      $menu_item->menu_item_parent = 0;
      $menu_item->object_id        = (int) $menu_item->ID;
      $menu_item->type             = 'post_type';

      $object                = get_post_type_object( $menu_item->post_type );
      $menu_item->object     = $object->name;
      $menu_item->type_label = $object->labels->singular_name;

      if ( '' === $menu_item->post_title ) {
        /* translators: %d: ID of a post. */
        $menu_item->post_title = sprintf( __( '#%d (no title)' ), $menu_item->ID );
      }

      $menu_item->title  = $menu_item->post_title;
      $menu_item->url    = get_permalink( $menu_item->ID );
      $menu_item->target = '';

      
/** This filter is documented in wp-includes/nav-menu.php */
      $menu_item->attr_title = apply_filters( 'nav_menu_attr_title', '' );

      
/** This filter is documented in wp-includes/nav-menu.php */
      $menu_item->description = apply_filters( 'nav_menu_description', '' );
      $menu_item->classes     = array();
      $menu_item->xfn         = '';
    }
  } elseif ( isset( $menu_item->taxonomy ) ) {
    $menu_item->ID               = $menu_item->term_id;
    $menu_item->db_id            = 0;
    $menu_item->menu_item_parent = 0;
    $menu_item->object_id        = (int) $menu_item->term_id;
    $menu_item->post_parent      = (int) $menu_item->parent;
    $menu_item->type             = 'taxonomy';

    $object                = get_taxonomy( $menu_item->taxonomy );
    $menu_item->object     = $object->name;
    $menu_item->type_label = $object->labels->singular_name;

    $menu_item->title       = $menu_item->name;
    $menu_item->url         = get_term_link( $menu_item, $menu_item->taxonomy );
    $menu_item->target      = '';
    $menu_item->attr_title  = '';
    $menu_item->description = get_term_field( 'description', $menu_item->term_id, $menu_item->taxonomy );
    $menu_item->classes     = array();
    $menu_item->xfn         = '';

  }

  
/**
 * Filters a navigation menu item object.
 *
 * @since 3.0.0
 *
 * @param object $menu_item The menu item object.
 */
  return apply_filters( 'wp_setup_nav_menu_item', $menu_item );
}
 

 View on GitHub View on Trac