Editor: Preserve the original template keys when preparing a list of page templates.

Previously, the original "404" template key was lost when "Default template" is merged into the available templates array, as the `array_merge()` function renumbers numeric keys. Later, when we merge templates on the client side, this caused duplicate "404" templates to appear in the dropdown.

By replacing the `array_merge()` call with `array_replace()`, we make sure to keep the original numeric keys.

Props Mamaduka, Toro_Unit, youknowriad.
Fixes #53898.

git-svn-id: https://develop.svn.wordpress.org/trunk@51595 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov
2021-08-10 17:55:37 +00:00
parent 2af80e6cbe
commit c550a592b9

View File

@@ -119,7 +119,7 @@ wp_add_inline_script(
* besides the default value.
*/
$available_templates = wp_get_theme()->get_page_templates( get_post( $post->ID ) );
$available_templates = ! empty( $available_templates ) ? array_merge(
$available_templates = ! empty( $available_templates ) ? array_replace(
array(
/** This filter is documented in wp-admin/includes/meta-boxes.php */
'' => apply_filters( 'default_page_template_title', __( 'Default template' ), 'rest-api' ),