Changeset 42343 for trunk/src/wp-includes/nav-menu.php
- Timestamp:
- 11/30/2017 11:09:33 PM (8 years ago)
- File:
-
- 1 edited
-
trunk/src/wp-includes/nav-menu.php (modified) (36 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/nav-menu.php
r42228 r42343 61 61 */ 62 62 function is_nav_menu( $menu ) { 63 if ( ! $menu ) 63 if ( ! $menu ) { 64 64 return false; 65 } 65 66 66 67 $menu_obj = wp_get_nav_menu_object( $menu ); … … 71 72 ! empty( $menu_obj->taxonomy ) && 72 73 'nav_menu' == $menu_obj->taxonomy 73 ) 74 ) { 74 75 return true; 76 } 75 77 76 78 return false; … … 106 108 global $_wp_registered_nav_menus; 107 109 108 if ( is_array( $_wp_registered_nav_menus ) && isset( $_wp_registered_nav_menus[ $location] ) ) {109 unset( $_wp_registered_nav_menus[ $location] );110 if ( is_array( $_wp_registered_nav_menus ) && isset( $_wp_registered_nav_menus[ $location ] ) ) { 111 unset( $_wp_registered_nav_menus[ $location ] ); 110 112 if ( empty( $_wp_registered_nav_menus ) ) { 111 113 _remove_theme_support( 'menus' ); … … 138 140 function get_registered_nav_menus() { 139 141 global $_wp_registered_nav_menus; 140 if ( isset( $_wp_registered_nav_menus ) ) 142 if ( isset( $_wp_registered_nav_menus ) ) { 141 143 return $_wp_registered_nav_menus; 144 } 142 145 return array(); 143 146 } … … 170 173 $registered_nav_menus = get_registered_nav_menus(); 171 174 if ( isset( $registered_nav_menus[ $location ] ) ) { 172 $locations = get_nav_menu_locations();175 $locations = get_nav_menu_locations(); 173 176 $has_nav_menu = ! empty( $locations[ $location ] ); 174 177 } … … 254 257 function wp_delete_nav_menu( $menu ) { 255 258 $menu = wp_get_nav_menu_object( $menu ); 256 if ( ! $menu ) 259 if ( ! $menu ) { 257 260 return false; 261 } 258 262 259 263 $menu_objects = get_objects_in_term( $menu->term_id, 'nav_menu' ); … … 269 273 $locations = get_nav_menu_locations(); 270 274 foreach ( $locations as $location => $menu_id ) { 271 if ( $menu_id == $menu->term_id ) 275 if ( $menu_id == $menu->term_id ) { 272 276 $locations[ $location ] = 0; 277 } 273 278 } 274 279 set_theme_mod( 'nav_menu_locations', $locations ); 275 280 276 if ( $result && ! is_wp_error($result) )281 if ( $result && ! is_wp_error( $result ) ) { 277 282 278 283 /** … … 284 289 */ 285 290 do_action( 'wp_delete_nav_menu', $menu->term_id ); 291 } 286 292 287 293 return $result; … … 306 312 307 313 $args = array( 308 'description' => ( isset( $menu_data['description'] ) ? $menu_data['description'] : '' ),309 'name' => ( isset( $menu_data['menu-name'] ) ? $menu_data['menu-name']: '' ),310 'parent' => ( isset( $menu_data['parent'] ) ? (int) $menu_data['parent'] : 0),314 'description' => ( isset( $menu_data['description'] ) ? $menu_data['description'] : '' ), 315 'name' => ( isset( $menu_data['menu-name'] ) ? $menu_data['menu-name'] : '' ), 316 'parent' => ( isset( $menu_data['parent'] ) ? (int) $menu_data['parent'] : 0 ), 311 317 'slug' => null, 312 318 ); … … 320 326 $_possible_existing->term_id != $menu_id 321 327 ) { 322 return new WP_Error( 'menu_exists', 328 return new WP_Error( 329 'menu_exists', 323 330 /* translators: %s: menu name */ 324 sprintf( __( 'The menu name %s conflicts with another menu name. Please try another.' ), 331 sprintf( 332 __( 'The menu name %s conflicts with another menu name. Please try another.' ), 325 333 '<strong>' . esc_html( $menu_data['menu-name'] ) . '</strong>' 326 334 ) … … 333 341 334 342 if ( $menu_exists ) { 335 return new WP_Error( 'menu_exists', 343 return new WP_Error( 344 'menu_exists', 336 345 /* translators: %s: menu name */ 337 sprintf( __( 'The menu name %s conflicts with another menu name. Please try another.' ), 346 sprintf( 347 __( 'The menu name %s conflicts with another menu name. Please try another.' ), 338 348 '<strong>' . esc_html( $menu_data['menu-name'] ) . '</strong>' 339 349 ) … … 343 353 $_menu = wp_insert_term( $menu_data['menu-name'], 'nav_menu', $args ); 344 354 345 if ( is_wp_error( $_menu ) ) 355 if ( is_wp_error( $_menu ) ) { 346 356 return $_menu; 357 } 347 358 348 359 /** … … 359 370 } 360 371 361 if ( ! $_menu || ! isset( $_menu->term_id ) ) 372 if ( ! $_menu || ! isset( $_menu->term_id ) ) { 362 373 return 0; 374 } 363 375 364 376 $menu_id = (int) $_menu->term_id; … … 366 378 $update_response = wp_update_term( $menu_id, 'nav_menu', $args ); 367 379 368 if ( is_wp_error( $update_response ) ) 380 if ( is_wp_error( $update_response ) ) { 369 381 return $update_response; 382 } 370 383 371 384 $menu_id = (int) $update_response['term_id']; … … 397 410 */ 398 411 function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item_data = array() ) { 399 $menu_id = (int) $menu_id;412 $menu_id = (int) $menu_id; 400 413 $menu_item_db_id = (int) $menu_item_db_id; 401 414 402 415 // make sure that we don't convert non-nav_menu_item objects into nav_menu_item objects 403 if ( ! empty( $menu_item_db_id ) && ! is_nav_menu_item( $menu_item_db_id ) ) 416 if ( ! empty( $menu_item_db_id ) && ! is_nav_menu_item( $menu_item_db_id ) ) { 404 417 return new WP_Error( 'update_nav_menu_item_failed', __( 'The given object ID is not that of a menu item.' ) ); 418 } 405 419 406 420 $menu = wp_get_nav_menu_object( $menu_id ); … … 415 429 416 430 $defaults = array( 417 'menu-item-db-id' => $menu_item_db_id,418 'menu-item-object-id' => 0,419 'menu-item-object' => '',420 'menu-item-parent-id' => 0,421 'menu-item-position' => 0,422 'menu-item-type' => 'custom',423 'menu-item-title' => '',424 'menu-item-url' => '',431 'menu-item-db-id' => $menu_item_db_id, 432 'menu-item-object-id' => 0, 433 'menu-item-object' => '', 434 'menu-item-parent-id' => 0, 435 'menu-item-position' => 0, 436 'menu-item-type' => 'custom', 437 'menu-item-title' => '', 438 'menu-item-url' => '', 425 439 'menu-item-description' => '', 426 'menu-item-attr-title' => '',427 'menu-item-target' => '',428 'menu-item-classes' => '',429 'menu-item-xfn' => '',430 'menu-item-status' => '',440 'menu-item-attr-title' => '', 441 'menu-item-target' => '', 442 'menu-item-classes' => '', 443 'menu-item-xfn' => '', 444 'menu-item-status' => '', 431 445 ); 432 446 … … 436 450 $args['menu-item-position'] = 1; 437 451 } elseif ( 0 == (int) $args['menu-item-position'] ) { 438 $menu_items = 0 == $menu_id ? array() : (array) wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) );439 $last_item = array_pop( $menu_items );452 $menu_items = 0 == $menu_id ? array() : (array) wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) ); 453 $last_item = array_pop( $menu_items ); 440 454 $args['menu-item-position'] = ( $last_item && isset( $last_item->menu_order ) ) ? 1 + $last_item->menu_order : count( $menu_items ); 441 455 } … … 454 468 if ( 'taxonomy' == $args['menu-item-type'] ) { 455 469 $original_parent = get_term_field( 'parent', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' ); 456 $original_title = get_term_field( 'name', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' );470 $original_title = get_term_field( 'name', $args['menu-item-object-id'], $args['menu-item-object'], 'raw' ); 457 471 } elseif ( 'post_type' == $args['menu-item-type'] ) { 458 472 459 473 $original_object = get_post( $args['menu-item-object-id'] ); 460 474 $original_parent = (int) $original_object->post_parent; 461 $original_title = $original_object->post_title;475 $original_title = $original_object->post_title; 462 476 } elseif ( 'post_type_archive' == $args['menu-item-type'] ) { 463 477 $original_object = get_post_type_object( $args['menu-item-object'] ); … … 467 481 } 468 482 469 if ( $args['menu-item-title'] == $original_title ) 483 if ( $args['menu-item-title'] == $original_title ) { 470 484 $args['menu-item-title'] = ''; 485 } 471 486 472 487 // hack to get wp to create a post object when too many properties are empty 473 if ( '' == $args['menu-item-title'] && '' == $args['menu-item-description'] )488 if ( '' == $args['menu-item-title'] && '' == $args['menu-item-description'] ) { 474 489 $args['menu-item-description'] = ' '; 490 } 475 491 } 476 492 477 493 // Populate the menu item object 478 494 $post = array( 479 'menu_order' => $args['menu-item-position'],480 'ping_status' => 0,495 'menu_order' => $args['menu-item-position'], 496 'ping_status' => 0, 481 497 'post_content' => $args['menu-item-description'], 482 498 'post_excerpt' => $args['menu-item-attr-title'], 483 'post_parent' => $original_parent,484 'post_title' => $args['menu-item-title'],485 'post_type' => 'nav_menu_item',499 'post_parent' => $original_parent, 500 'post_title' => $args['menu-item-title'], 501 'post_type' => 'nav_menu_item', 486 502 ); 487 503 … … 490 506 // New menu item. Default is draft status 491 507 if ( ! $update ) { 492 $post['ID'] = 0;508 $post['ID'] = 0; 493 509 $post['post_status'] = 'publish' == $args['menu-item-status'] ? 'publish' : 'draft'; 494 $menu_item_db_id = wp_insert_post( $post );495 if ( ! $menu_item_db_id || is_wp_error( $menu_item_db_id ) )510 $menu_item_db_id = wp_insert_post( $post ); 511 if ( ! $menu_item_db_id || is_wp_error( $menu_item_db_id ) ) { 496 512 return $menu_item_db_id; 513 } 497 514 498 515 /** … … 518 535 if ( 'custom' == $args['menu-item-type'] ) { 519 536 $args['menu-item-object-id'] = $menu_item_db_id; 520 $args['menu-item-object'] = 'custom';537 $args['menu-item-object'] = 'custom'; 521 538 } 522 539 523 540 $menu_item_db_id = (int) $menu_item_db_id; 524 541 525 update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key( $args['menu-item-type']) );542 update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key( $args['menu-item-type'] ) ); 526 543 update_post_meta( $menu_item_db_id, '_menu_item_menu_item_parent', strval( (int) $args['menu-item-parent-id'] ) ); 527 544 update_post_meta( $menu_item_db_id, '_menu_item_object_id', strval( (int) $args['menu-item-object-id'] ) ); 528 update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key( $args['menu-item-object']) );529 update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key( $args['menu-item-target']) );545 update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key( $args['menu-item-object'] ) ); 546 update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key( $args['menu-item-target'] ) ); 530 547 531 548 $args['menu-item-classes'] = array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-classes'] ) ); 532 $args['menu-item-xfn'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-xfn'] ) ) );549 $args['menu-item-xfn'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-xfn'] ) ) ); 533 550 update_post_meta( $menu_item_db_id, '_menu_item_classes', $args['menu-item-classes'] ); 534 551 update_post_meta( $menu_item_db_id, '_menu_item_xfn', $args['menu-item-xfn'] ); 535 update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw( $args['menu-item-url']) );536 537 if ( 0 == $menu_id ) 552 update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw( $args['menu-item-url'] ) ); 553 554 if ( 0 == $menu_id ) { 538 555 update_post_meta( $menu_item_db_id, '_menu_item_orphaned', (string) time() ); 539 elseif ( get_post_meta( $menu_item_db_id, '_menu_item_orphaned' ) )556 } elseif ( get_post_meta( $menu_item_db_id, '_menu_item_orphaned' ) ) { 540 557 delete_post_meta( $menu_item_db_id, '_menu_item_orphaned' ); 558 } 541 559 542 560 // Update existing menu item. Default is publish status 543 561 if ( $update ) { 544 $post['ID'] = $menu_item_db_id;562 $post['ID'] = $menu_item_db_id; 545 563 $post['post_status'] = 'draft' == $args['menu-item-status'] ? 'draft' : 'publish'; 546 564 wp_update_post( $post ); … … 575 593 */ 576 594 function wp_get_nav_menus( $args = array() ) { 577 $defaults = array( 'hide_empty' => false, 'orderby' => 'name' ); 578 $args = wp_parse_args( $args, $defaults ); 595 $defaults = array( 596 'hide_empty' => false, 597 'orderby' => 'name', 598 ); 599 $args = wp_parse_args( $args, $defaults ); 579 600 580 601 /** … … 588 609 * @param array $args An array of arguments used to retrieve menu objects. 589 610 */ 590 return apply_filters( 'wp_get_nav_menus', get_terms( 'nav_menu', $args), $args );611 return apply_filters( 'wp_get_nav_menus', get_terms( 'nav_menu', $args ), $args ); 591 612 } 592 613 … … 652 673 } 653 674 654 $defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 655 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true ); 656 $args = wp_parse_args( $args, $defaults ); 675 $defaults = array( 676 'order' => 'ASC', 677 'orderby' => 'menu_order', 678 'post_type' => 'nav_menu_item', 679 'post_status' => 'publish', 680 'output' => ARRAY_A, 681 'output_key' => 'menu_order', 682 'nopaging' => true, 683 ); 684 $args = wp_parse_args( $args, $defaults ); 657 685 $args['include'] = $items; 658 686 … … 665 693 // Get all posts and terms at once to prime the caches 666 694 if ( empty( $fetched[ $menu->term_id ] ) && ! wp_using_ext_object_cache() ) { 667 $fetched[ $menu->term_id] = true;668 $posts = array();669 $terms = array();695 $fetched[ $menu->term_id ] = true; 696 $posts = array(); 697 $terms = array(); 670 698 foreach ( $items as $item ) { 671 699 $object_id = get_post_meta( $item->ID, '_menu_item_object_id', true ); 672 $object = get_post_meta( $item->ID, '_menu_item_object', true ); 673 $type = get_post_meta( $item->ID, '_menu_item_type', true ); 674 675 if ( 'post_type' == $type ) 676 $posts[$object][] = $object_id; 677 elseif ( 'taxonomy' == $type) 678 $terms[$object][] = $object_id; 700 $object = get_post_meta( $item->ID, '_menu_item_object', true ); 701 $type = get_post_meta( $item->ID, '_menu_item_type', true ); 702 703 if ( 'post_type' == $type ) { 704 $posts[ $object ][] = $object_id; 705 } elseif ( 'taxonomy' == $type ) { 706 $terms[ $object ][] = $object_id; 707 } 679 708 } 680 709 681 710 if ( ! empty( $posts ) ) { 682 foreach ( array_keys($posts) as $post_type ) { 683 get_posts( array('post__in' => $posts[$post_type], 'post_type' => $post_type, 'nopaging' => true, 'update_post_term_cache' => false) ); 711 foreach ( array_keys( $posts ) as $post_type ) { 712 get_posts( 713 array( 714 'post__in' => $posts[ $post_type ], 715 'post_type' => $post_type, 716 'nopaging' => true, 717 'update_post_term_cache' => false, 718 ) 719 ); 684 720 } 685 721 } 686 unset( $posts);722 unset( $posts ); 687 723 688 724 if ( ! empty( $terms ) ) { 689 foreach ( array_keys($terms) as $taxonomy ) { 690 get_terms( $taxonomy, array( 691 'include' => $terms[ $taxonomy ], 692 'hierarchical' => false, 693 ) ); 725 foreach ( array_keys( $terms ) as $taxonomy ) { 726 get_terms( 727 $taxonomy, array( 728 'include' => $terms[ $taxonomy ], 729 'hierarchical' => false, 730 ) 731 ); 694 732 } 695 733 } 696 unset( $terms);734 unset( $terms ); 697 735 } 698 736 … … 704 742 705 743 if ( ARRAY_A == $args['output'] ) { 706 $items = wp_list_sort( $items, array( 707 $args['output_key'] => 'ASC', 708 ) ); 709 $i = 1; 744 $items = wp_list_sort( 745 $items, array( 746 $args['output_key'] => 'ASC', 747 ) 748 ); 749 $i = 1; 710 750 foreach ( $items as $k => $item ) { 711 $items[ $k]->{$args['output_key']} = $i++;751 $items[ $k ]->{$args['output_key']} = $i++; 712 752 } 713 753 } … … 755 795 if ( isset( $menu_item->post_type ) ) { 756 796 if ( 'nav_menu_item' == $menu_item->post_type ) { 757 $menu_item->db_id = (int) $menu_item->ID;797 $menu_item->db_id = (int) $menu_item->ID; 758 798 $menu_item->menu_item_parent = ! isset( $menu_item->menu_item_parent ) ? get_post_meta( $menu_item->ID, '_menu_item_menu_item_parent', true ) : $menu_item->menu_item_parent; 759 $menu_item->object_id = ! isset( $menu_item->object_id ) ? get_post_meta( $menu_item->ID, '_menu_item_object_id', true ) : $menu_item->object_id;760 $menu_item->object = ! isset( $menu_item->object ) ? get_post_meta( $menu_item->ID, '_menu_item_object', true ) : $menu_item->object;761 $menu_item->type = ! isset( $menu_item->type ) ? get_post_meta( $menu_item->ID, '_menu_item_type', true ) : $menu_item->type;799 $menu_item->object_id = ! isset( $menu_item->object_id ) ? get_post_meta( $menu_item->ID, '_menu_item_object_id', true ) : $menu_item->object_id; 800 $menu_item->object = ! isset( $menu_item->object ) ? get_post_meta( $menu_item->ID, '_menu_item_object', true ) : $menu_item->object; 801 $menu_item->type = ! isset( $menu_item->type ) ? get_post_meta( $menu_item->ID, '_menu_item_type', true ) : $menu_item->type; 762 802 763 803 if ( 'post_type' == $menu_item->type ) { … … 767 807 } else { 768 808 $menu_item->type_label = $menu_item->object; 769 $menu_item->_invalid = true;809 $menu_item->_invalid = true; 770 810 } 771 811 … … 788 828 789 829 } elseif ( 'post_type_archive' == $menu_item->type ) { 790 $object = get_post_type_object( $menu_item->object );830 $object = get_post_type_object( $menu_item->object ); 791 831 if ( $object ) { 792 $menu_item->title = '' == $menu_item->post_title ? $object->labels->archives : $menu_item->post_title;832 $menu_item->title = '' == $menu_item->post_title ? $object->labels->archives : $menu_item->post_title; 793 833 $post_type_description = $object->description; 794 834 } else { 795 $menu_item->_invalid = true;835 $menu_item->_invalid = true; 796 836 $post_type_description = ''; 797 837 } 798 838 799 839 $menu_item->type_label = __( 'Post Type Archive' ); 800 $post_content = wp_trim_words( $menu_item->post_content, 200 );840 $post_content = wp_trim_words( $menu_item->post_content, 200 ); 801 841 $post_type_description = '' == $post_content ? $post_type_description : $post_content; 802 $menu_item->url = get_post_type_archive_link( $menu_item->object );842 $menu_item->url = get_post_type_archive_link( $menu_item->object ); 803 843 } elseif ( 'taxonomy' == $menu_item->type ) { 804 844 $object = get_taxonomy( $menu_item->object ); … … 807 847 } else { 808 848 $menu_item->type_label = $menu_item->object; 809 $menu_item->_invalid = true;849 $menu_item->_invalid = true; 810 850 } 811 851 812 $term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object );813 $menu_item->url = ! is_wp_error( $term_url ) ? $term_url : '';852 $term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object ); 853 $menu_item->url = ! is_wp_error( $term_url ) ? $term_url : ''; 814 854 815 855 $original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' ); 816 if ( is_wp_error( $original_title ) ) 856 if ( is_wp_error( $original_title ) ) { 817 857 $original_title = false; 858 } 818 859 $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title; 819 860 820 861 } else { 821 $menu_item->type_label = __( 'Custom Link');822 $menu_item->title = $menu_item->post_title;823 $menu_item->url = ! isset( $menu_item->url ) ? get_post_meta( $menu_item->ID, '_menu_item_url', true ) : $menu_item->url;862 $menu_item->type_label = __( 'Custom Link' ); 863 $menu_item->title = $menu_item->post_title; 864 $menu_item->url = ! isset( $menu_item->url ) ? get_post_meta( $menu_item->ID, '_menu_item_url', true ) : $menu_item->url; 824 865 } 825 866 … … 847 888 848 889 $menu_item->classes = ! isset( $menu_item->classes ) ? (array) get_post_meta( $menu_item->ID, '_menu_item_classes', true ) : $menu_item->classes; 849 $menu_item->xfn = ! isset( $menu_item->xfn ) ? get_post_meta( $menu_item->ID, '_menu_item_xfn', true ) : $menu_item->xfn;890 $menu_item->xfn = ! isset( $menu_item->xfn ) ? get_post_meta( $menu_item->ID, '_menu_item_xfn', true ) : $menu_item->xfn; 850 891 } else { 851 $menu_item->db_id = 0;892 $menu_item->db_id = 0; 852 893 $menu_item->menu_item_parent = 0; 853 $menu_item->object_id = (int) $menu_item->ID;854 $menu_item->type = 'post_type';855 856 $object = get_post_type_object( $menu_item->post_type );857 $menu_item->object = $object->name;894 $menu_item->object_id = (int) $menu_item->ID; 895 $menu_item->type = 'post_type'; 896 897 $object = get_post_type_object( $menu_item->post_type ); 898 $menu_item->object = $object->name; 858 899 $menu_item->type_label = $object->labels->singular_name; 859 900 … … 863 904 } 864 905 865 $menu_item->title = $menu_item->post_title;866 $menu_item->url = get_permalink( $menu_item->ID );906 $menu_item->title = $menu_item->post_title; 907 $menu_item->url = get_permalink( $menu_item->ID ); 867 908 $menu_item->target = ''; 868 909 … … 872 913 /** This filter is documented in wp-includes/nav-menu.php */ 873 914 $menu_item->description = apply_filters( 'nav_menu_description', '' ); 874 $menu_item->classes = array();875 $menu_item->xfn = '';915 $menu_item->classes = array(); 916 $menu_item->xfn = ''; 876 917 } 877 918 } elseif ( isset( $menu_item->taxonomy ) ) { 878 $menu_item->ID = $menu_item->term_id;879 $menu_item->db_id = 0;919 $menu_item->ID = $menu_item->term_id; 920 $menu_item->db_id = 0; 880 921 $menu_item->menu_item_parent = 0; 881 $menu_item->object_id = (int) $menu_item->term_id;882 $menu_item->post_parent = (int) $menu_item->parent;883 $menu_item->type = 'taxonomy';884 885 $object = get_taxonomy( $menu_item->taxonomy );886 $menu_item->object = $object->name;922 $menu_item->object_id = (int) $menu_item->term_id; 923 $menu_item->post_parent = (int) $menu_item->parent; 924 $menu_item->type = 'taxonomy'; 925 926 $object = get_taxonomy( $menu_item->taxonomy ); 927 $menu_item->object = $object->name; 887 928 $menu_item->type_label = $object->labels->singular_name; 888 929 889 $menu_item->title = $menu_item->name;890 $menu_item->url = get_term_link( $menu_item, $menu_item->taxonomy );891 $menu_item->target = '';892 $menu_item->attr_title = '';930 $menu_item->title = $menu_item->name; 931 $menu_item->url = get_term_link( $menu_item, $menu_item->taxonomy ); 932 $menu_item->target = ''; 933 $menu_item->attr_title = ''; 893 934 $menu_item->description = get_term_field( 'description', $menu_item->term_id, $menu_item->taxonomy ); 894 $menu_item->classes = array();895 $menu_item->xfn = '';935 $menu_item->classes = array(); 936 $menu_item->xfn = ''; 896 937 897 938 } … … 918 959 */ 919 960 function wp_get_associated_nav_menu_items( $object_id = 0, $object_type = 'post_type', $taxonomy = '' ) { 920 $object_id = (int) $object_id;961 $object_id = (int) $object_id; 921 962 $menu_item_ids = array(); 922 963 923 $query = new WP_Query;964 $query = new WP_Query; 924 965 $menu_items = $query->query( 925 966 array( 926 'meta_key' => '_menu_item_object_id',927 'meta_value' => $object_id,928 'post_status' => 'any',929 'post_type' => 'nav_menu_item',967 'meta_key' => '_menu_item_object_id', 968 'meta_value' => $object_id, 969 'post_status' => 'any', 970 'post_type' => 'nav_menu_item', 930 971 'posts_per_page' => -1, 931 972 ) … … 959 1000 * 960 1001 * @param int $object_id The ID of the original object being trashed. 961 *962 1002 */ 963 1003 function _wp_delete_post_menu_item( $object_id = 0 ) { … … 1002 1042 */ 1003 1043 function _wp_auto_add_pages_to_menu( $new_status, $old_status, $post ) { 1004 if ( 'publish' != $new_status || 'publish' == $old_status || 'page' != $post->post_type ) 1044 if ( 'publish' != $new_status || 'publish' == $old_status || 'page' != $post->post_type ) { 1005 1045 return; 1006 if ( ! empty( $post->post_parent ) ) 1046 } 1047 if ( ! empty( $post->post_parent ) ) { 1007 1048 return; 1049 } 1008 1050 $auto_add = get_option( 'nav_menu_options' ); 1009 if ( empty( $auto_add ) || ! is_array( $auto_add ) || ! isset( $auto_add['auto_add'] ) ) 1051 if ( empty( $auto_add ) || ! is_array( $auto_add ) || ! isset( $auto_add['auto_add'] ) ) { 1010 1052 return; 1053 } 1011 1054 $auto_add = $auto_add['auto_add']; 1012 if ( empty( $auto_add ) || ! is_array( $auto_add ) ) 1055 if ( empty( $auto_add ) || ! is_array( $auto_add ) ) { 1013 1056 return; 1057 } 1014 1058 1015 1059 $args = array( 1016 1060 'menu-item-object-id' => $post->ID, 1017 'menu-item-object' => $post->post_type,1018 'menu-item-type' => 'post_type',1019 'menu-item-status' => 'publish',1061 'menu-item-object' => $post->post_type, 1062 'menu-item-type' => 'post_type', 1063 'menu-item-status' => 'publish', 1020 1064 ); 1021 1065 1022 1066 foreach ( $auto_add as $menu_id ) { 1023 1067 $items = wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) ); 1024 if ( ! is_array( $items ) ) 1068 if ( ! is_array( $items ) ) { 1025 1069 continue; 1070 } 1026 1071 foreach ( $items as $item ) { 1027 if ( $post->ID == $item->object_id ) 1072 if ( $post->ID == $item->object_id ) { 1028 1073 continue 2; 1074 } 1029 1075 } 1030 1076 wp_update_nav_menu_item( $menu_id, 0, $args );
Note: See TracChangeset
for help on using the changeset viewer.