Widgets: Prevent showing underlying attachment excerpt as caption when empty caption value is supplied in Image widget.
Allow underlying attachment to display if `caption` is `null`. Props miyauchi, westonruter. See #39993. Fixes #42350. git-svn-id: https://develop.svn.wordpress.org/trunk@42030 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
49ec33ae71
commit
6eacf2f06b
|
@ -177,8 +177,10 @@ class WP_Widget_Media_Image extends WP_Widget_Media {
|
||||||
$attachment = get_post( $instance['attachment_id'] );
|
$attachment = get_post( $instance['attachment_id'] );
|
||||||
}
|
}
|
||||||
if ( $attachment ) {
|
if ( $attachment ) {
|
||||||
$caption = $attachment->post_excerpt;
|
$caption = '';
|
||||||
if ( $instance['caption'] ) {
|
if ( ! isset( $instance['caption'] ) ) {
|
||||||
|
$caption = $attachment->post_excerpt;
|
||||||
|
} elseif ( trim( $instance['caption'] ) ) {
|
||||||
$caption = $instance['caption'];
|
$caption = $instance['caption'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -425,28 +425,38 @@ class Test_WP_Widget_Media_Image extends WP_UnitTestCase {
|
||||||
$this->assertContains( '<a href="https://example.org"', $output );
|
$this->assertContains( '<a href="https://example.org"', $output );
|
||||||
$this->assertContains( 'target="_blank"', $output );
|
$this->assertContains( 'target="_blank"', $output );
|
||||||
|
|
||||||
// Caption settings.
|
// Populate caption in attachment.
|
||||||
wp_update_post( array(
|
wp_update_post( array(
|
||||||
'ID' => $attachment_id,
|
'ID' => $attachment_id,
|
||||||
'post_excerpt' => 'Default caption',
|
'post_excerpt' => 'Default caption',
|
||||||
) );
|
) );
|
||||||
|
|
||||||
|
// If no caption is supplied, then the default is '', and so the caption will not be displayed.
|
||||||
ob_start();
|
ob_start();
|
||||||
$widget->render_media( array(
|
$widget->render_media( array(
|
||||||
'attachment_id' => $attachment_id,
|
'attachment_id' => $attachment_id,
|
||||||
) );
|
) );
|
||||||
$output = ob_get_clean();
|
$output = ob_get_clean();
|
||||||
|
$this->assertNotContains( 'wp-caption', $output );
|
||||||
|
$this->assertNotContains( '<p class="wp-caption-text">', $output );
|
||||||
|
|
||||||
|
// If the caption is explicitly null, then the caption of the underlying attachment will be displayed.
|
||||||
|
ob_start();
|
||||||
|
$widget->render_media( array(
|
||||||
|
'attachment_id' => $attachment_id,
|
||||||
|
'caption' => null,
|
||||||
|
) );
|
||||||
|
$output = ob_get_clean();
|
||||||
$this->assertContains( 'class="wp-caption alignnone"', $output );
|
$this->assertContains( 'class="wp-caption alignnone"', $output );
|
||||||
$this->assertContains( '<p class="wp-caption-text">Default caption</p>', $output );
|
$this->assertContains( '<p class="wp-caption-text">Default caption</p>', $output );
|
||||||
|
|
||||||
|
// If caption is provided, then it will be displayed.
|
||||||
ob_start();
|
ob_start();
|
||||||
$widget->render_media( array(
|
$widget->render_media( array(
|
||||||
'attachment_id' => $attachment_id,
|
'attachment_id' => $attachment_id,
|
||||||
'caption' => 'Custom caption',
|
'caption' => 'Custom caption',
|
||||||
) );
|
) );
|
||||||
$output = ob_get_clean();
|
$output = ob_get_clean();
|
||||||
|
|
||||||
$this->assertContains( 'class="wp-caption alignnone"', $output );
|
$this->assertContains( 'class="wp-caption alignnone"', $output );
|
||||||
$this->assertContains( '<p class="wp-caption-text">Custom caption</p>', $output );
|
$this->assertContains( '<p class="wp-caption-text">Custom caption</p>', $output );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue