WordPress.org

Make WordPress Core

Changeset 41549


Ignore:
Timestamp:
09/20/17 19:44:13 (2 months 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.