Changeset 54370
- Timestamp:
- 10/03/2022 04:34:57 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/block-template-utils.php
r54333 r54370 532 532 533 533 /** 534 * Builds the title and description of a post-specific template based on the underlying referenced post. 535 * 536 * Mutates the underlying template object. 537 * 538 * @since 6.1.0 539 * @access private 540 * 541 * @param string $post_type Post type, e.g. page, post, product. 542 * @param string $slug Slug of the post, e.g. a-story-about-shoes. 543 * @param WP_Block_Template $template Template to mutate adding the description and title computed. 544 * @return bool Returns true if the referenced post was found and false otherwise. 545 */ 546 function _wp_build_title_and_description_for_single_post_type_block_template( $post_type, $slug, WP_Block_Template $template ) { 547 $post_type_object = get_post_type_object( $post_type ); 548 549 $posts = get_posts( 550 array( 551 'name' => $slug, 552 'post_type' => $post_type, 553 ) 554 ); 555 556 if ( empty( $posts ) ) { 557 $template->title = sprintf( 558 /* translators: Custom template title in the Site Editor referencing a post that was not found. 1: Post type singular name, 2: Post type slug. */ 559 __( 'Not found: %1$s (%2$s)' ), 560 $post_type_object->labels->singular_name, 561 $slug 562 ); 563 564 return false; 565 } 566 567 $post_title = $posts[0]->post_title; 568 569 $template->title = sprintf( 570 /* translators: Custom template title in the Site Editor. 1: Post type singular name, 2: Post title. */ 571 __( '%1$s: %2$s' ), 572 $post_type_object->labels->singular_name, 573 $post_title 574 ); 575 576 $template->description = sprintf( 577 /* translators: Custom template description in the Site Editor. %s: Post title. */ 578 __( 'Template for %s' ), 579 $post_title 580 ); 581 582 $posts_with_same_title = get_posts( 583 array( 584 'title' => $post_title, 585 'post_type' => $post_type, 586 'post_status' => 'publish', 587 ) 588 ); 589 590 if ( count( $posts_with_same_title ) > 1 ) { 591 $template->title = sprintf( 592 /* translators: Custom template title in the Site Editor. 1: Template title, 2: Post type slug. */ 593 __( '%1$s (%2$s)' ), 594 $template->title, 595 $slug 596 ); 597 } 598 599 return true; 600 } 601 602 /** 603 * Builds the title and description of a taxonomy-specific template based on the underlying entity referenced. 604 * 605 * Mutates the underlying template object. 606 * 607 * @since 6.1.0 608 * @access private 609 * 610 * @param string $taxonomy Identifier of the taxonomy, e.g. category. 611 * @param string $slug Slug of the term, e.g. shoes. 612 * @param WP_Block_Template $template Template to mutate adding the description and title computed. 613 * @return bool True if the term referenced was found and false otherwise. 614 */ 615 function _wp_build_title_and_description_for_taxonomy_block_template( $taxonomy, $slug, WP_Block_Template $template ) { 616 $taxonomy_object = get_taxonomy( $taxonomy ); 617 618 $terms = get_terms( 619 array( 620 'taxonomy' => $taxonomy, 621 'hide_empty' => false, 622 'slug' => $slug, 623 ) 624 ); 625 626 if ( empty( $terms ) ) { 627 $template->title = sprintf( 628 /* translators: Custom template title in the Site Editor, referencing a taxonomy term that was not found. 1: Taxonomy singular name, 2: Term slug. */ 629 __( 'Not found: %1$s (%2$s)' ), 630 $taxonomy_object->labels->singular_name, 631 $slug 632 ); 633 return false; 634 } 635 636 $term_title = $terms[0]->name; 637 638 $template->title = sprintf( 639 /* translators: Custom template title in the Site Editor. 1: Taxonomy singular name, 2: Term title. */ 640 __( '%1$s: %2$s' ), 641 $taxonomy_object->labels->singular_name, 642 $term_title 643 ); 644 645 $template->description = sprintf( 646 /* translators: Custom template description in the Site Editor. %s: Term title. */ 647 __( 'Template for %s' ), 648 $term_title 649 ); 650 651 $terms_with_same_title = get_terms( 652 array( 653 'taxonomy' => $taxonomy, 654 'hide_empty' => false, 655 'name' => $term_title, 656 ) 657 ); 658 659 if ( count( $terms_with_same_title ) > 1 ) { 660 $template->title = sprintf( 661 /* translators: Custom template title in the Site Editor. 1: Template title, 2: Term slug. */ 662 __( '%1$s (%2$s)' ), 663 $template->title, 664 $slug 665 ); 666 } 667 668 return true; 669 } 670 671 /** 534 672 * Builds a unified template object based a post Object. 535 673 * … … 590 728 } 591 729 730 // Check for a block template without a description and title or with a title equal to the slug. 731 if ( 'wp_template' === $post->post_type && empty( $template->description ) && ( empty( $template->title ) || $template->title === $template->slug ) ) { 732 $matches = array(); 733 734 // Check for a block template for a single author, page, post, tag, category, custom post type, or custom taxonomy. 735 if ( preg_match( '/(author|page|single|tag|category|taxonomy)-(.+)/', $template->slug, $matches ) ) { 736 $type = $matches[1]; 737 $slug_remaining = $matches[2]; 738 739 switch ( $type ) { 740 case 'author': 741 $nice_name = $slug_remaining; 742 $users = get_users( 743 array( 744 'capability' => 'edit_posts', 745 'search' => $nice_name, 746 'search_columns' => array( 'user_nicename' ), 747 'fields' => 'display_name', 748 ) 749 ); 750 751 if ( empty( $users ) ) { 752 $template->title = sprintf( 753 /* translators: Custom template title in the Site Editor, referencing a deleted author. %s: Author nicename. */ 754 __( 'Deleted author: %s' ), 755 $nice_name 756 ); 757 } else { 758 $author_name = $users[0]; 759 760 $template->title = sprintf( 761 /* translators: Custom template title in the Site Editor. %s: Author name. */ 762 __( 'Author: %s' ), 763 $author_name 764 ); 765 766 $template->description = sprintf( 767 /* translators: Custom template description in the Site Editor. %s: Author name. */ 768 __( 'Template for %s' ), 769 $author_name 770 ); 771 772 $users_with_same_name = get_users( 773 array( 774 'capability' => 'edit_posts', 775 'search' => $author_name, 776 'search_columns' => array( 'display_name' ), 777 'fields' => 'display_name', 778 ) 779 ); 780 781 if ( count( $users_with_same_name ) > 1 ) { 782 $template->title = sprintf( 783 /* translators: Custom template title in the Site Editor. 1: Template title of an author template, 2: Author nicename. */ 784 __( '%1$s (%2$s)' ), 785 $template->title, 786 $nice_name 787 ); 788 } 789 } 790 break; 791 case 'page': 792 _wp_build_title_and_description_for_single_post_type_block_template( 'page', $slug_remaining, $template ); 793 break; 794 case 'single': 795 $post_types = get_post_types(); 796 797 foreach ( $post_types as $post_type ) { 798 $post_type_length = strlen( $post_type ) + 1; 799 800 // If $slug_remaining starts with $post_type followed by a hyphen. 801 if ( 0 === strncmp( $slug_remaining, $post_type . '-', $post_type_length ) ) { 802 $slug = substr( $slug_remaining, $post_type_length, strlen( $slug_remaining ) ); 803 $found = _wp_build_title_and_description_for_single_post_type_block_template( $post_type, $slug, $template ); 804 805 if ( $found ) { 806 break; 807 } 808 } 809 } 810 break; 811 case 'tag': 812 _wp_build_title_and_description_for_taxonomy_block_template( 'post_tag', $slug_remaining, $template ); 813 break; 814 case 'category': 815 _wp_build_title_and_description_for_taxonomy_block_template( 'category', $slug_remaining, $template ); 816 break; 817 case 'taxonomy': 818 $taxonomies = get_taxonomies(); 819 820 foreach ( $taxonomies as $taxonomy ) { 821 $taxonomy_length = strlen( $taxonomy ) + 1; 822 823 // If $slug_remaining starts with $taxonomy followed by a hyphen. 824 if ( 0 === strncmp( $slug_remaining, $taxonomy . '-', $taxonomy_length ) ) { 825 $slug = substr( $slug_remaining, $taxonomy_length, strlen( $slug_remaining ) ); 826 $found = _wp_build_title_and_description_for_taxonomy_block_template( $taxonomy, $slug, $template ); 827 828 if ( $found ) { 829 break; 830 } 831 } 832 } 833 break; 834 } 835 } 836 } 837 592 838 return $template; 593 839 }
Note: See TracChangeset
for help on using the changeset viewer.