Make WordPress Core

Changeset 41549


Ignore:
Timestamp:
09/20/2017 07:44:13 PM (7 years ago)
Author:
westonruter
Message:

Widgets: Omit attributes from an Image widget's link when they are empty.

Props subrataemfluence, Nenad Obradovic, westonruter.
See #39993.
Fixes #41919.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/widgets/class-wp-widget-media-image.php

    r41252 r41549  
    241241
    242242        if ( $url ) {
    243             $image = sprintf(
    244                 '<a href="%1$s" class="%2$s" rel="%3$s" target="%4$s">%5$s</a>',
    245                 esc_url( $url ),
    246                 esc_attr( $instance['link_classes'] ),
    247                 esc_attr( $instance['link_rel'] ),
    248                 ! empty( $instance['link_target_blank'] ) ? '_blank' : '',
    249                 $image
    250             );
     243            $link = sprintf( '<a href="%s"', esc_url( $url ) );
     244            if ( ! empty( $instance['link_classes'] ) ) {
     245                $link .= sprintf( ' class="%s"', esc_attr( $instance['link_classes'] ) );
     246            }
     247            if ( ! empty( $instance['link_rel'] ) ) {
     248                $link .= sprintf( ' rel="%s"', esc_attr( $instance['link_rel'] ) );
     249            }
     250            if ( ! empty( $instance['link_target_blank'] ) ) {
     251                $link .= ' target="_blank"';
     252            }
     253            $link .= '>';
     254            $link .= $image;
     255            $link .= '</a>';
     256            $image = $link;
    251257        }
    252258
  • trunk/tests/phpunit/tests/widgets/media-image-widget.php

    r40674 r41549  
    394394        $link = '<a href="' . wp_get_attachment_url( $attachment_id ) . '"';
    395395        $this->assertContains( $link, $output );
    396         $link .= ' class=""';
    397         $this->assertContains( $link, $output );
    398         $link .= ' rel=""';
    399         $this->assertContains( $link, $output );
    400         $link .= ' target=""';
    401         $this->assertContains( $link, $output );
     396        $this->assertTrue( (bool) preg_match( '#<a href.*?>#', $output, $matches ) );
     397        $this->assertNotContains( ' class="', $matches[0] );
     398        $this->assertNotContains( ' rel="', $matches[0] );
     399        $this->assertNotContains( ' target="', $matches[0] );
    402400
    403401        ob_start();
     
    414412        $this->assertContains( 'class="custom-link-class"', $output );
    415413        $this->assertContains( 'rel="attachment"', $output );
    416         $this->assertContains( 'target=""', $output );
     414        $this->assertNotContains( 'target=""', $output );
    417415
    418416        ob_start();
Note: See TracChangeset for help on using the changeset viewer.