Make WordPress Core

Ticket #16075: 16075.7.diff

File 16075.7.diff, 6.7 KB (added by aaroncampbell, 9 years ago)
  • src/wp-admin/includes/ajax-actions.php

    diff --git src/wp-admin/includes/ajax-actions.php src/wp-admin/includes/ajax-actions.php
    index f70996d..fa2bc63 100644
    function wp_ajax_add_menu_item() { 
    11581158                                        $_object = get_post( $menu_item_data['menu-item-object-id'] );
    11591159                                break;
    11601160
     1161                                case 'post_type_archive' :
     1162                                        $_object = get_post_type_object( $menu_item_data['menu-item-object'] );
     1163                                break;
     1164
    11611165                                case 'taxonomy' :
    11621166                                        $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
    11631167                                break;
  • src/wp-admin/includes/class-walker-nav-menu-edit.php

    diff --git src/wp-admin/includes/class-walker-nav-menu-edit.php src/wp-admin/includes/class-walker-nav-menu-edit.php
    index b233c32..fdb8055 100644
    class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { 
    7878                } elseif ( 'post_type' == $item->type ) {
    7979                        $original_object = get_post( $item->object_id );
    8080                        $original_title = get_the_title( $original_object->ID );
     81                } elseif ( 'post_type_archive' == $item->type ) {
     82                        $original_object = get_post_type_object( $item->object );
     83                        $original_title = $original_object->labels->archives;
    8184                }
    8285
    8386                $classes = array(
  • src/wp-admin/includes/nav-menu.php

    diff --git src/wp-admin/includes/nav-menu.php src/wp-admin/includes/nav-menu.php
    index de9955a..8ad449c 100644
    function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { 
    493493                                        }
    494494                                }
    495495
     496                                $post_type = get_post_type_object( $post_type_name );
     497                                $archive_link = get_post_type_archive_link( $post_type_name );
     498                                if ( $post_type->has_archive ) {
     499                                        $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
     500                                        array_unshift( $posts, (object) array(
     501                                                'ID' => 0,
     502                                                'object_id' => $_nav_menu_placeholder,
     503                                                'object'     => $post_type_name,
     504                                                'post_content' => '',
     505                                                'post_excerpt' => '',
     506                                                'post_title' => $post_type->labels->archives,
     507                                                'post_type' => 'nav_menu_item',
     508                                                'type' => 'post_type_archive',
     509                                                'url' => get_post_type_archive_link( $post_type_name ),
     510                                        ) );
     511                                }
     512
    496513                                /**
    497514                                 * Filter the posts displayed in the 'View All' tab of the current
    498515                                 * post type's menu items meta box.
  • src/wp-includes/nav-menu-template.php

    diff --git src/wp-includes/nav-menu-template.php src/wp-includes/nav-menu-template.php
    index 8c74758..253b654 100644
    function _wp_menu_item_classes_by_context( &$menu_items ) { 
    578578                        $active_parent_object_ids[] = (int) $menu_item->post_parent;
    579579                        $active_object = $menu_item->object;
    580580
     581                // if the menu item corresponds to the currently-queried post type archive
     582                } elseif (
     583                        'post_type_archive' == $menu_item->type &&
     584                        is_post_type_archive( array( $menu_item->object ) )
     585                ) {
     586                        $classes[] = 'current-menu-item';
     587                        $menu_items[$key]->current = true;
    581588                // if the menu item corresponds to the currently-requested URL
    582589                } elseif ( 'custom' == $menu_item->object && isset( $_SERVER['HTTP_HOST'] ) ) {
    583590                        $_root_relative_current = untrailingslashit( $_SERVER['REQUEST_URI'] );
  • src/wp-includes/nav-menu.php

    diff --git src/wp-includes/nav-menu.php src/wp-includes/nav-menu.php
    index 9cce24f..589e7b4 100644
    function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item 
    403403                        $original_object = get_post( $args['menu-item-object-id'] );
    404404                        $original_parent = (int) $original_object->post_parent;
    405405                        $original_title = $original_object->post_title;
     406                } elseif ( 'post_type_archive' == $args['menu-item-type'] ) {
     407
     408                        $original_object = get_post_type_object( $args['menu-item-object'] );
     409                        $original_title = $original_object->labels->archives;
    406410                }
    407411
    408412                if ( $args['menu-item-title'] == $original_title )
    function wp_setup_nav_menu_item( $menu_item ) { 
    731735
    732736                                $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
    733737
     738                        } elseif ( 'post_type_archive' == $menu_item->type ) {
     739                                $object =  get_post_type_object( $menu_item->object );
     740                                if ( $object ) {
     741                                        $menu_item->title = '' == $menu_item->post_title ? $object->labels->archives : $menu_item->post_title;
     742                                } else {
     743                                        $menu_item->_invalid = true;
     744                                }
     745
     746                                $menu_item->type_label = __( 'Post Type Archive' );
     747                                $menu_item->description = '';
     748                                $menu_item->url = get_post_type_archive_link( $menu_item->object );
    734749                        } elseif ( 'taxonomy' == $menu_item->type ) {
    735750                                $object = get_taxonomy( $menu_item->object );
    736751                                if ( $object ) {
  • src/wp-includes/post-functions.php

    diff --git src/wp-includes/post-functions.php src/wp-includes/post-functions.php
    index 6d5957b..0bd7893 100644
    function _post_type_meta_capabilities( $capabilities = null ) { 
    13151315 * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
    13161316 *                       ones the default is 'Parent Page:'.
    13171317 * - all_items - String for the submenu. Default is All Posts/All Pages.
     1318 * - archives - String for use with archives in nav menus. Default is Post Archives/Page Archives.
    13181319 * - insert_into_item - String for the media frame button. Default is Insert into post/Insert into page.
    13191320 * - uploaded_to_this_item - String for the media frame filter. Default is Uploaded to this post/Uploaded to this page.
    13201321 * - featured_image - Default is Featured Image.
    function get_post_type_labels( $post_type_object ) { 
    13531354                'not_found_in_trash' => array( __('No posts found in Trash.'), __('No pages found in Trash.') ),
    13541355                'parent_item_colon' => array( null, __('Parent Page:') ),
    13551356                'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) ),
     1357                'archives' => array( __( 'Post Archives' ), __( 'Page Archives' ) ),
    13561358                'insert_into_item' => array( __( 'Insert into post' ), __( 'Insert into page' ) ),
    13571359                'uploaded_to_this_item' => array( __( 'Uploaded to this post' ), __( 'Uploaded to this page' ) ),
    13581360                'featured_image' => array( __( 'Featured Image' ), __( 'Featured Image' ) ),
    function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) { 
    14191421        if ( !isset( $object->labels['all_items'] ) && isset( $object->labels['menu_name'] ) )
    14201422                $object->labels['all_items'] = $object->labels['menu_name'];
    14211423
     1424        if ( !isset( $object->labels['archives'] ) && isset( $object->labels['all_items'] ) ) {
     1425                $object->labels['archives'] = $object->labels['all_items'];
     1426        }
     1427
    14221428        $defaults = array();
    14231429        foreach ( $nohier_vs_hier_defaults as $key => $value ) {
    14241430                $defaults[$key] = $object->hierarchical ? $value[1] : $value[0];