Make WordPress Core

Changeset 54333


Ignore:
Timestamp:
09/27/2022 04:30:32 PM (2 years ago)
Author:
davidbaumwald
Message:

Editor: Revert dynamic template names and descriptions.

After discussions with the Editor Tech leads for 6.1(@bernhard-reiter, @cbravobernal, and @ndiego) and additional guidance from @hellofromtonya, the decision has been made to exclude Gutenberg PR #43862 from the pre-Beta 2 Gutenberg sync PR and revert [54280]. Why? [54280] added the feature's PHP code, but the JS package updates were not included before feature freeze(Beta 1), meaning the feature was incomplete. As the PHP code does not work without the JS package update, the feature is incomplete and missed the feature freeze deadline.

Leaving the PHP code was discussed. However, there is a risk of it needing to change which could complicate backwards compatibility in 6.2 when the feature is eventually introduced.

Follow-up to [54280].

Props hellofromTonya, bernhard-reiter, cbravobernal.
See #56467.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-template-utils.php

    r54280 r54333  
    532532
    533533/**
    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 private
    538  * @internal
    539  *
    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             $slug
    561         );
    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_title
    572     );
    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_title
    577     );
    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             $slug
    592         );
    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 private
    602  * @internal
    603  *
    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             $slug
    627         );
    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_title
    638     );
    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_title
    643     );
    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             $slug
    658         );
    659     }
    660     return true;
    661 }
    662 
    663 /**
    664534 * Builds a unified template object based a post Object.
    665535 *
     
    720590    }
    721591
    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_name
    746                         );
    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_name
    754                         );
    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_name
    759                         );
    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_name
    775                             );
    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     }
    819592    return $template;
    820593}
Note: See TracChangeset for help on using the changeset viewer.