Ticket #13958: 13958.2.diff

File 13958.2.diff, 5.3 KB (added by garyc40, 2 years ago)

fixed typo

Line 
1diff --git wp-admin/includes/nav-menu.php wp-admin/includes/nav-menu.php
2index 6e92928..bd1064a 100644
3--- wp-admin/includes/nav-menu.php
4+++ wp-admin/includes/nav-menu.php
5@@ -54,6 +54,8 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu  {
6                $original_title = '';
7                if ( 'taxonomy' == $item->type ) {
8                        $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
9+                       if ( is_wp_error( $original_title ) )
10+                               $original_title = $original_title->get_error_message();
11                } elseif ( 'post_type' == $item->type ) {
12                        $original_object = get_post( $item->object_id );
13                        $original_title = $original_object->post_title;
14@@ -1073,13 +1075,18 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
15                        return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named <strong>%s</strong> does not exist.'), $walker_class_name ) );
16 
17                $some_pending_menu_items = false;
18+               $invalid_items = false;
19                foreach( (array) $menu_items as $menu_item ) {
20-                       if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status )
21+                       if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) {
22                                $some_pending_menu_items = true;
23+                               
24+                               if ( ( $menu_item->type == 'post_type' && ! post_type_exists( $menu_item->object ) ) || ( ( $menu_item->type == 'taxonomy' ) && ! taxonomy_exists( $menu_item->object ) ) )
25+                                       $invalid_items = true;
26+                       }
27                }
28 
29                if ( $some_pending_menu_items )
30-                       $result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pending menu items public.') . '</p></div>';
31+                       $result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pending menu items public.') . ( $invalid_items ? '<br />' . __( 'However, menu items associated with invalid post types or taxonomies will not be made public.' ) : '' ) . '</p></div>';
32 
33                $result .= '<ul class="menu" id="menu-to-edit"> ';
34                $result .= walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $menu_items), 0, (object) array('walker' => $walker ) );
35diff --git wp-admin/nav-menus.php wp-admin/nav-menus.php
36index 1e39805..11117cb 100644
37--- wp-admin/nav-menus.php
38+++ wp-admin/nav-menus.php
39@@ -301,7 +301,6 @@ switch ( $action ) {
40 
41                // update existing menu
42                } else {
43-
44                        $_menu_object = wp_get_nav_menu_object( $nav_menu_selected_id );
45 
46                        $menu_title = trim( esc_html( $_POST['menu-name'] ) );
47diff --git wp-includes/nav-menu.php wp-includes/nav-menu.php
48index e1af8f7..4930125 100644
49--- wp-includes/nav-menu.php
50+++ wp-includes/nav-menu.php
51@@ -324,7 +324,6 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
52                        $original_parent = get_term_field( 'parent', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );
53                        $original_title = get_term_field( 'name', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );
54                } elseif ( 'post_type' == $args['menu-item-type'] ) {
55-
56                        $original_object = get_post( $args['menu-item-object-id'] );
57                        $original_parent = (int) $original_object->post_parent;
58                        $original_title = $original_object->post_title;
59@@ -512,6 +511,9 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
60        }
61 
62        $items = array_map( 'wp_setup_nav_menu_item', $items );
63+       
64+       if ( ! in_array( $args['post_status'], array( 'draft', 'any' ) ) )
65+               $items = array_filter( $items, create_function( '$item', 'return $item->post_status != "draft";' ) );
66 
67        if ( ARRAY_A == $args['output'] ) {
68                $GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
69@@ -560,22 +562,31 @@ function wp_setup_nav_menu_item( $menu_item ) {
70 
71                        if ( 'post_type' == $menu_item->type ) {
72                                $object = get_post_type_object( $menu_item->object );
73-                               $menu_item->type_label = $object->labels->singular_name;
74-                               $menu_item->url = get_permalink( $menu_item->object_id );
75-
76+                               if ( empty( $object ) ) {
77+                                       $menu_item->type_label = __( 'Invalid post type' );
78+                                       $menu_item->url = '';
79+                                       $menu_item->post_status = 'draft';
80+                               } else {
81+                                       $menu_item->type_label = $object->labels->singular_name;
82+                                       $menu_item->url = get_permalink( $menu_item->object_id );
83+                               }
84                                $original_object = get_post( $menu_item->object_id );
85                                $original_title = $original_object->post_title;
86                                $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
87-
88                        } elseif ( 'taxonomy' == $menu_item->type ) {
89                                $object = get_taxonomy( $menu_item->object );
90-                               $menu_item->type_label = $object->labels->singular_name;
91+                               $original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' );
92+                               if ( empty( $object ) || is_wp_error( $original_title ) ) {
93+                                       $menu_item->type_label = __( 'Invalid Taxonomy' );
94+                                       $menu_item->title = '';
95+                                       $menu_item->post_status = 'draft';
96+                               } else {
97+                                       $menu_item->type_label = $object->labels->singular_name;
98+                                       $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
99+                               }
100+                               
101                                $term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
102                                $menu_item->url = !is_wp_error( $term_url ) ? $term_url : '';
103-
104-                               $original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' );
105-                               $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
106-
107                        } else {
108                                $menu_item->type_label = __('Custom');
109                                $menu_item->title = $menu_item->post_title;