Changeset 54333
- Timestamp:
- 09/27/2022 04:30:32 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/block-template-utils.php
r54280 r54333 532 532 533 533 /** 534 * Builds the title and description of a post specific template based on the underlying referenced post.535 * Mutates the underlying template object.536 *537 * @access private538 * @internal539 *540 * @param string $post_type Post type e.g.: page, post, product.541 * @param string $slug Slug of the post e.g.: a-story-about-shoes.542 * @param WP_Block_Template $template Template to mutate adding the description and title computed.543 *544 * @return boolean 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 if ( empty( $posts ) ) {556 $template->title = sprintf(557 // translators: Represents the title of a user's custom template in the Site Editor referencing a post that was not found, where %1$s is the singular name of a post type and %2$s is the slug of the deleted post, e.g. "Not found: Page(hello)".558 __( 'Not found: %1$s(%2$s)' ),559 $post_type_object->labels->singular_name,560 $slug561 );562 return false;563 }564 565 $post_title = $posts[0]->post_title;566 567 $template->title = sprintf(568 // translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the singular name of a post type and %2$s is the name of the post, e.g. "Page: Hello".569 __( '%1$s: %2$s' ),570 $post_type_object->labels->singular_name,571 $post_title572 );573 $template->description = sprintf(574 // translators: Represents the description of a user's custom template in the Site Editor, e.g. "Template for Page: Hello".575 __( 'Template for %1$s' ),576 $post_title577 );578 579 $posts_with_same_title = get_posts(580 array(581 'title' => $post_title,582 'post_type' => $post_type,583 'post_status' => 'publish',584 )585 );586 if ( count( $posts_with_same_title ) > 1 ) {587 $template->title = sprintf(588 // translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the template title and %2$s is the slug of the post type, e.g. "Project: Hello (project_type)".589 __( '%1$s (%2$s)' ),590 $template->title,591 $slug592 );593 }594 return true;595 }596 597 /**598 * Builds the title and description of a taxonomy specific template based on the underlying entity referenced.599 * Mutates the underlying template object.600 *601 * @access private602 * @internal603 *604 * @param string $taxonomy Identifier of the taxonomy, e.g.: category.605 * @param string $slug Slug of the term, e.g.: shoes.606 * @param WP_Block_Template $template Template to mutate adding the description and title computed.607 *608 * @return boolean True if an term referenced was found and false otherwise.609 */610 function _wp_build_title_and_description_for_taxonomy_block_template( $taxonomy, $slug, WP_Block_Template $template ) {611 $taxonomy_object = get_taxonomy( $taxonomy );612 613 $terms = get_terms(614 array(615 'taxonomy' => $taxonomy,616 'hide_empty' => false,617 'slug' => $slug,618 )619 );620 621 if ( empty( $terms ) ) {622 $template->title = sprintf(623 // translators: Represents the title of a user's custom template in the Site Editor referencing a taxonomy term that was not found, where %1$s is the singular name of a taxonomy and %2$s is the slug of the deleted term, e.g. "Not found: Category(shoes)".624 __( 'Not found: %1$s(%2$s)' ),625 $taxonomy_object->labels->singular_name,626 $slug627 );628 return false;629 }630 631 $term_title = $terms[0]->name;632 633 $template->title = sprintf(634 // translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the singular name of a taxonomy and %2$s is the name of the term, e.g. "Category: shoes".635 __( '%1$s: %2$s' ),636 $taxonomy_object->labels->singular_name,637 $term_title638 );639 $template->description = sprintf(640 // translators: Represents the description of a user's custom template in the Site Editor, e.g. "Template for Category: shoes".641 __( 'Template for %1$s' ),642 $term_title643 );644 645 $terms_with_same_title = get_terms(646 array(647 'taxonomy' => $taxonomy,648 'hide_empty' => false,649 'name' => $term_title,650 )651 );652 if ( count( $terms_with_same_title ) > 1 ) {653 $template->title = sprintf(654 // translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the template title and %2$s is the slug of the taxonomy, e.g. "Category: shoes (product_tag)".655 __( '%1$s (%2$s)' ),656 $template->title,657 $slug658 );659 }660 return true;661 }662 663 /**664 534 * Builds a unified template object based a post Object. 665 535 * … … 720 590 } 721 591 722 // If it is a block template without description and without title or with title equal to the slug.723 if ( 'wp_template' === $post->post_type && empty( $template->description ) && ( empty( $template->title ) || $template->title === $template->slug ) ) {724 $matches = array();725 // If it is a block template for a single author, page, post, tag, category, custom post type or custom taxonomy.726 if ( preg_match( '/(author|page|single|tag|category|taxonomy)-(.+)/', $template->slug, $matches ) ) {727 $type = $matches[1];728 $slug_remaining = $matches[2];729 switch ( $type ) {730 case 'author':731 $nice_name = $slug_remaining;732 $users = get_users(733 array(734 'capability' => 'edit_posts',735 'search' => $nice_name,736 'search_columns' => array( 'user_nicename' ),737 'fields' => 'display_name',738 )739 );740 741 if ( empty( $users ) ) {742 $template->title = sprintf(743 // translators: Represents the title of a user's custom template in the Site Editor referencing a deleted author, where %s is the author's nicename, e.g. "Deleted author: jane-doe".744 __( 'Deleted author: %s' ),745 $nice_name746 );747 } else {748 $author_name = $users[0];749 750 $template->title = sprintf(751 // translators: Represents the title of a user's custom template in the Site Editor, where %s is the author's name, e.g. "Author: Jane Doe".752 __( 'Author: %s' ),753 $author_name754 );755 $template->description = sprintf(756 // translators: Represents the description of a user's custom template in the Site Editor, e.g. "Template for Author: Jane Doe".757 __( 'Template for %1$s' ),758 $author_name759 );760 761 $users_with_same_name = get_users(762 array(763 'capability' => 'edit_posts',764 'search' => $author_name,765 'search_columns' => array( 'display_name' ),766 'fields' => 'display_name',767 )768 );769 if ( count( $users_with_same_name ) > 1 ) {770 $template->title = sprintf(771 // translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the template title of an author template and %2$s is the nicename of the author, e.g. "Author: Jorge (jorge-costa)".772 __( '%1$s (%2$s)' ),773 $template->title,774 $nice_name775 );776 }777 }778 break;779 case 'page':780 _wp_build_title_and_description_for_single_post_type_block_template( 'page', $slug_remaining, $template );781 break;782 case 'single':783 $post_types = get_post_types();784 foreach ( $post_types as $post_type ) {785 $post_type_length = strlen( $post_type ) + 1;786 // If $slug_remaining starts with $post_type followed by a hyphen.787 if ( 0 === strncmp( $slug_remaining, $post_type . '-', $post_type_length ) ) {788 $slug = substr( $slug_remaining, $post_type_length, strlen( $slug_remaining ) );789 $found = _wp_build_title_and_description_for_single_post_type_block_template( $post_type, $slug, $template );790 if ( $found ) {791 break;792 }793 }794 }795 break;796 case 'tag':797 _wp_build_title_and_description_for_taxonomy_block_template( 'post_tag', $slug_remaining, $template );798 break;799 case 'category':800 _wp_build_title_and_description_for_taxonomy_block_template( 'category', $slug_remaining, $template );801 break;802 case 'taxonomy':803 $taxonomies = get_taxonomies();804 foreach ( $taxonomies as $taxonomy ) {805 $taxonomy_length = strlen( $taxonomy ) + 1;806 // If $slug_remaining starts with $taxonomy followed by a hyphen.807 if ( 0 === strncmp( $slug_remaining, $taxonomy . '-', $taxonomy_length ) ) {808 $slug = substr( $slug_remaining, $taxonomy_length, strlen( $slug_remaining ) );809 $found = _wp_build_title_and_description_for_taxonomy_block_template( $taxonomy, $slug, $template );810 if ( $found ) {811 break;812 }813 }814 }815 break;816 }817 }818 }819 592 return $template; 820 593 }
Note: See TracChangeset
for help on using the changeset viewer.