Skip to:
Content

bbPress.org

Ticket #3318: 3318.diff

File 3318.diff, 4.3 KB (added by diddledani, 5 years ago)

Patch to add rel="nofollow ugc" to topic and reply content when displaying

  • trunk/src/includes/common/formatting.php

     
    294294 * @return string $text Text with rel=nofollow added to any links
    295295 */
    296296function bbp_rel_nofollow( $text = '' ) {
    297         return preg_replace_callback( '|<a (.+?)>|i', 'bbp_rel_nofollow_callback', $text );
     297        return preg_replace_callback(
     298                '|<a (.+?)>|i',
     299                function( $matches ) {
     300                        bbp_rel_callback( $matches, 'nofollow' );
     301                },
     302                $text
     303        );
    298304}
    299305
    300306/**
     307 * Catches links so rel="nofollow ugc" can be added (on output, not save)
     308 *
     309 * @param string $text Post text
     310 * @return string $text Text with rel="nofollow ugc" added to any links
     311 */
     312function bbp_rel_ugc( $text = '' ) {
     313        return preg_replace_callback(
     314                '|<a (.+?)>|i',
     315                function( $matches ) {
     316                        return bbp_rel_callback( $matches, 'nofollow ugc' );
     317                },
     318                $text
     319        );
     320}
     321
     322/**
    301323 * Adds rel=nofollow to a link
    302324 *
    303325 * @since 2.3.0 bbPress (r4865)
     
    306328 * @return string $text Link with rel=nofollow added
    307329 */
    308330function bbp_rel_nofollow_callback( $matches = array() ) {
     331        return bbp_rel_callback( $matches, 'nofollow' );
     332}
     333
     334/**
     335 * Adds a rel attribute to a link
     336 *
     337 * @param array $matches
     338 * @param string $rel
     339 * @return string $text Link with the added rel attribute
     340 */
     341function bbp_rel_callback( $matches, $rel ) {
    309342        $text     = $matches[1];
    310343        $atts     = shortcode_parse_atts( $matches[1] );
    311         $rel      = 'nofollow';
    312344        $home_url = home_url();
    313345
    314346        // Bail on links that match the current domain
     
    320352
    321353        // Avoid collisions with existing "rel" attribute
    322354        if ( ! empty( $atts['rel'] ) ) {
    323                 $parts = array_map( 'trim', explode( ' ', $atts['rel'] ) );
    324                 if ( false === array_search( 'nofollow', $parts ) ) {
    325                         $parts[] = 'nofollow';
    326                 }
    327 
    328                 $rel = implode( ' ', $parts );
     355                $parts     = array_map( 'trim', explode( ' ', $atts['rel'] ) );
     356                $rel_array = array_map( 'trim', explode( ' ', $rel ) );
     357                $parts     = array_unique( array_merge( $parts, $rel_array ) );
     358                $rel       = implode( ' ', $parts );
    329359                unset( $atts['rel'] );
    330360
    331361                $html = '';
  • trunk/src/includes/core/filters.php

     
    168168add_filter( 'bbp_get_reply_content', 'force_balance_tags', 30 );
    169169add_filter( 'bbp_get_reply_content', 'bbp_make_clickable', 40 );
    170170add_filter( 'bbp_get_reply_content', 'wpautop',            50 );
    171 add_filter( 'bbp_get_reply_content', 'bbp_rel_nofollow',   60 );
     171add_filter( 'bbp_get_reply_content', 'bbp_rel_ugc',        60 );
    172172
    173173// Run filters on topic content
    174174add_filter( 'bbp_get_topic_content', 'wptexturize',        6  );
     
    178178add_filter( 'bbp_get_topic_content', 'force_balance_tags', 30 );
    179179add_filter( 'bbp_get_topic_content', 'bbp_make_clickable', 40 );
    180180add_filter( 'bbp_get_topic_content', 'wpautop',            50 );
    181 add_filter( 'bbp_get_topic_content', 'bbp_rel_nofollow',   60 );
     181add_filter( 'bbp_get_topic_content', 'bbp_rel_ugc',        60 );
    182182
    183183// Admin-only
    184184if ( is_admin() ) {
  • trunk/src/templates/default/bbpress/user-profile.php

     
    2020
    2121                <?php if ( bbp_get_displayed_user_field( 'description' ) ) : ?>
    2222
    23                         <p class="bbp-user-description"><?php echo bbp_rel_nofollow( bbp_get_displayed_user_field( 'description' ) ); ?></p>
     23                        <p class="bbp-user-description"><?php echo bbp_rel_ugc( bbp_get_displayed_user_field( 'description' ) ); ?></p>
    2424
    2525                <?php endif; ?>
    2626
    2727                <?php if ( bbp_get_displayed_user_field( 'user_url' ) ) : ?>
    2828
    29                         <p class="bbp-user-website"><?php printf( esc_html__( 'Website: %s', 'bbpress' ), bbp_rel_nofollow( bbp_make_clickable( bbp_get_displayed_user_field( 'user_url' ) ) ) ); ?></p>
     29                        <p class="bbp-user-website"><?php printf( esc_html__( 'Website: %s', 'bbpress' ), bbp_rel_ugc( bbp_make_clickable( bbp_get_displayed_user_field( 'user_url' ) ) ) ); ?></p>
    3030
    3131                <?php endif; ?>
    3232