*
* @since 3.0.0
*
- * @uses get_term
- * @uses get_term_by
- *
- * @param string $menu Menu id, slug or name
+ * @param string $menu Menu ID, slug, or name.
* @return mixed false if $menu param isn't supplied or term does not exist, menu object if successful.
*/
function wp_get_nav_menu_object( $menu ) {
*
* @since 3.0.0
*
- * @param int|string $menu The menu to check (id, slug, or name)
+ * @param int|string $menu The menu to check (ID, slug, or name).
* @return bool Whether the menu exists.
*/
function is_nav_menu( $menu ) {
/**
* Unregisters a navigation menu for a theme.
*
- * @param array $location the menu location identifier
- *
+ * @param string $location The menu location identifier.
* @return bool True on success, false on failure.
*/
function unregister_nav_menu( $location ) {
* @return bool Whether location has a menu.
*/
function has_nav_menu( $location ) {
+ $registered_nav_menus = get_registered_nav_menus();
+ if ( ! isset( $registered_nav_menus[ $location ] ) ) {
+ return false;
+ }
+
$locations = get_nav_menu_locations();
return ( ! empty( $locations[ $location ] ) );
}
*
* @since 3.0.0
*
- * @param string $menu_name Menu Name
- * @return mixed Menu object on success|WP_Error on failure
+ * @param string $menu_name Menu name.
+ * @return int|WP_Error Menu ID on success, WP_Error object on failure.
*/
function wp_create_nav_menu( $menu_name ) {
return wp_update_nav_menu_object( 0, array( 'menu-name' => $menu_name ) );
*
* @since 3.0.0
*
- * @param string $menu name|id|slug
- * @return mixed Menu object on success|WP_Error on failure
+ * @param string $menu Menu ID, slug, or name.
+ * @return bool|WP_Error True on success, false or WP_Error object on failure.
*/
function wp_delete_nav_menu( $menu ) {
$menu = wp_get_nav_menu_object( $menu );
*
* @param int $menu_id The ID of the menu or "0" to create a new menu.
* @param array $menu_data The array of menu data.
- * @return int|WP_Error object The menu's ID or WP_Error object.
+ * @return int|WP_Error Menu ID on success, WP_Error object on failure.
*/
function wp_update_nav_menu_object( $menu_id = 0, $menu_data = array() ) {
$menu_id = (int) $menu_id;
* Returns all navigation menu objects.
*
* @since 3.0.0
+ * @since 4.1.0 Default value of the 'orderby' argument was changed from 'none'
+ * to 'name'.
*
- * @param array $args Array of arguments passed on to get_terms().
- * @return array menu objects
+ * @param array $args Optional. Array of arguments passed on to {@see get_terms()}.
+ * Default empty array.
+ * @return array Menu objects.
*/
function wp_get_nav_menus( $args = array() ) {
- $defaults = array( 'hide_empty' => false, 'orderby' => 'none' );
+ $defaults = array( 'hide_empty' => false, 'orderby' => 'name' );
$args = wp_parse_args( $args, $defaults );
/**
}
/**
- * Returns if a menu item is valid. Bug #13958
+ * Return if a menu item is valid.
+ *
+ * @link https://core.trac.wordpress.org/ticket/13958
*
* @since 3.2.0
* @access private
*
- * @param object $menu_item The menu item to check
- * @return bool false if invalid, else true.
+ * @param object $item The menu item to check.
+ * @return bool False if invalid, otherwise true.
*/
function _is_valid_nav_menu_item( $item ) {
if ( ! empty( $item->_invalid ) )
}
/**
- * Returns all menu items of a navigation menu.
+ * Return all menu items of a navigation menu.
*
* @since 3.0.0
*
- * @param string $menu menu name, id, or slug
- * @param string $args
- * @return mixed $items array of menu items, else false.
+ * @param string $menu Menu name, ID, or slug.
+ * @param array $args Optional. Arguments to pass to {@see get_posts()}.
+ * @return mixed $items Array of menu items, otherwise false.
*/
function wp_get_nav_menu_items( $menu, $args = array() ) {
$menu = wp_get_nav_menu_object( $menu );
$defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item',
'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true );
$args = wp_parse_args( $args, $defaults );
- if ( count( $items ) > 1 )
- $args['include'] = implode( ',', $items );
- else
- $args['include'] = $items[0];
+ $args['include'] = $items;
$items = get_posts( $args );
$original_object = get_post( $menu_item->object_id );
$original_title = $original_object->post_title;
+
+ if ( '' === $original_title ) {
+ $original_title = sprintf( __( '#%d (no title)' ), $original_object->ID );
+ }
+
$menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
} elseif ( 'taxonomy' == $menu_item->type ) {