Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions src/wp-admin/includes/misc.php
Original file line number Diff line number Diff line change
Expand Up @@ -609,8 +609,11 @@ function wp_reset_vars( $vars ) {
* @since 2.1.0
*
* @param string|WP_Error $message The message to display, or a WP_Error object.
* @param bool $echo Optional. Whether to print the message and flush all output
* buffers. Default true.
* @return string|void The message HTML if `$echo` is false.
*/
function show_message( $message ) {
function show_message( $message, $echo = true ) {
if ( is_wp_error( $message ) ) {
if ( $message->get_error_data() && is_string( $message->get_error_data() ) ) {
$message = $message->get_error_message() . ': ' . $message->get_error_data();
Expand All @@ -619,7 +622,13 @@ function show_message( $message ) {
}
}

echo "<p>$message</p>\n";
$output = "<p>$message</p>\n";

if ( ! $echo ) {
return $output;
}

echo $output;
wp_ob_end_flush_all();
flush();
}
Expand Down
34 changes: 34 additions & 0 deletions tests/phpunit/tests/admin/includes/misc/ShowMessage_Test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

/**
* @group admin
*
* @covers ::show_message
*/
class Tests_Admin_Includes_Misc_ShowMessage_Test extends WP_UnitTestCase {

/**
* @ticket 65181
*/
public function test_show_message_returns_formatted_html_for_string() {
$this->assertSame( "<p>A message.</p>\n", show_message( 'A message.', false ) );
}

/**
* @ticket 65181
*/
public function test_show_message_returns_formatted_html_for_wp_error_with_string_data() {
$error = new WP_Error( 'test_error', 'A message.', 'Error details.' );

$this->assertSame( "<p>A message.: Error details.</p>\n", show_message( $error, false ) );
}

/**
* @ticket 65181
*/
public function test_show_message_returns_formatted_html_for_wp_error_without_string_data() {
$error = new WP_Error( 'test_error', 'A message.', array( 'Error details.' ) );

$this->assertSame( "<p>A message.</p>\n", show_message( $error, false ) );
}
}
Loading