Make WordPress Core

Ticket #35324: 35324-4.patch

File 35324-4.patch, 2.3 KB (added by Toro_Unit, 9 years ago)

Add Support nav_menu_description filter.

  • src/wp-includes/nav-menu.php

     
    758758                                }
    759759
    760760                                $menu_item->type_label = __( 'Post Type Archive' );
    761                                 $menu_item->description = '';
     761                                $post_content = wp_trim_words( $menu_item->post_content, 200 );
     762                                $post_type_description = '' == $post_content ? $object->description : $post_content;
     763                                $menu_item->description = apply_filters( 'nav_menu_description', $post_type_description );
    762764                                $menu_item->url = get_post_type_archive_link( $menu_item->object );
    763765                        } elseif ( 'taxonomy' == $menu_item->type ) {
    764766                                $object = get_taxonomy( $menu_item->object );
  • tests/phpunit/tests/post/nav-menu.php

     
    180180
    181181                $this->assertEquals( $nav_menus_names, $expected_nav_menus_names );
    182182        }
     183
     184        /**
     185         * @ticket 35324
     186         */
     187        function test_wp_setup_nav_menu_item_for_post_type_archive() {
     188
     189                $post_type_slug = rand_str( 12 );
     190                $post_type_description = rand_str();
     191                register_post_type( $post_type_slug ,array(
     192                        'public' => true,
     193                        'has_archive' => true,
     194                        'description' => $post_type_description,
     195                        'label' => $post_type_slug
     196                ));
     197
     198                $post_type_archive_item_id = wp_update_nav_menu_item( $this->menu_id, 0, array(
     199                        'menu-item-type' => 'post_type_archive',
     200                        'menu-item-object' => $post_type_slug,
     201                        'menu-item-status' => 'publish'
     202                ) );
     203                $post_type_archive_item = wp_setup_nav_menu_item( get_post( $post_type_archive_item_id ) );
     204
     205                $this->assertEquals( $post_type_slug , $post_type_archive_item->title );
     206                $this->assertEquals( $post_type_description , $post_type_archive_item->description ); //fail!!!
     207
     208                $custom_description = rand_str();
     209                wp_update_nav_menu_item( $this->menu_id, $post_type_archive_item_id, array(
     210                        'menu-item-title'       => 'WordPress',
     211                        'menu-item-description' => $custom_description
     212                ) );
     213                $post_type_archive_item = wp_setup_nav_menu_item( get_post( $post_type_archive_item_id ) );
     214                $this->assertEquals( 'WordPress', $post_type_archive_item->title );
     215                $this->assertEquals( $custom_description, $post_type_archive_item->description );
     216        }
    183217}