diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-includes/post-template.php --- a/wp/wp-includes/post-template.php Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-includes/post-template.php Fri Sep 05 18:52:52 2025 +0200 @@ -676,6 +676,8 @@ $post_id = $post->ID; $post_type = $post->post_type; + $classes[] = 'wp-singular'; + if ( is_page_template() ) { $classes[] = "{$post_type}-template"; @@ -836,6 +838,11 @@ } } + $classes[] = 'wp-theme-' . sanitize_html_class( get_template() ); + if ( is_child_theme() ) { + $classes[] = 'wp-child-theme-' . sanitize_html_class( get_stylesheet() ); + } + if ( ! empty( $css_class ) ) { if ( ! is_array( $css_class ) ) { $css_class = preg_split( '#\s+#', $css_class ); @@ -1767,27 +1774,60 @@ * @return string HTML content for password form for password protected post. */ function get_the_password_form( $post = 0 ) { - $post = get_post( $post ); - $label = 'pwbox-' . ( empty( $post->ID ) ? rand() : $post->ID ); - $output = '
+ $post = get_post( $post ); + $field_id = 'pwbox-' . ( empty( $post->ID ) ? wp_rand() : $post->ID ); + $invalid_password = ''; + $invalid_password_html = ''; + $aria = ''; + $class = ''; + $redirect_field = ''; + + // If the referrer is the same as the current request, the user has entered an invalid password. + if ( ! empty( $post->ID ) && wp_get_raw_referer() === get_permalink( $post->ID ) && isset( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ) { + /** + * Filters the invalid password message shown on password-protected posts. + * The filter is only applied if the post is password protected. + * + * @since 6.8.0 + * + * @param string $text The message shown to users when entering an invalid password. + * @param WP_Post $post Post object. + */ + $invalid_password = apply_filters( 'the_password_form_incorrect_password', __( 'Invalid password.' ), $post ); + $invalid_password_html = ''; + $aria = ' aria-describedby="error-' . $field_id . '"'; + $class = ' password-form-error'; + } + + if ( ! empty( $post->ID ) ) { + $redirect_field = sprintf( + '', + esc_attr( get_permalink( $post->ID ) ) + ); + } + + $output = '' . $redirect_field . $invalid_password_html . '

' . __( 'This content is password protected. To view it please enter your password below:' ) . '

-

+

'; /** * Filters the HTML output for the protected post password form. * - * If modifying the password field, please note that the core database schema - * limits the password field to 20 characters regardless of the value of the - * size attribute in the form input. + * If modifying the password field, please note that the WordPress database schema + * limits the password field to 255 characters regardless of the value of the + * `minlength` or `maxlength` attributes or other validation that may be added to + * the input. * * @since 2.7.0 * @since 5.8.0 Added the `$post` parameter. + * @since 6.8.0 Added the `$invalid_password` parameter. * - * @param string $output The password form HTML output. - * @param WP_Post $post Post object. + * @param string $output The password form HTML output. + * @param WP_Post $post Post object. + * @param string $invalid_password The invalid password message. */ - return apply_filters( 'the_password_form', $output, $post ); + return apply_filters( 'the_password_form', $output, $post, $invalid_password ); } /**