Making WordPress.org

Changeset 8639


Ignore:
Timestamp:
04/16/2019 06:34:57 AM (7 years ago)
Author:
dd32
Message:

Support Forums: Add noindex, follow robots headers to a bunch of various archives and pages..

Fixes #4324, #4338, #3955, #4283, #4384, #4329.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php

    r8619 r8639  
    2626                // Output rel="next", rel="prev" meta tags.
    2727                add_action( 'wp_head', array( $this, 'rel_next_prev' ), 9 );
     28
     29                // Output robots headers.
     30                add_action( 'wp_head', array( $this, 'robots_noindex_header' ));
    2831
    2932                // Link to create new topics atop topic list.
    … …  
    357360
    358361        /**
     362         * Adds noindex robots headers to various pages.
     363         */
     364        public function robots_noindex_header() {
     365                $robots = false;
     366
     367                if ( bbp_is_search() ) {
     368                        // #3955
     369                        $robots = true;
     370                } elseif (
     371                        bbp_is_single_view() &&
     372                        in_array( bbp_get_view_id(), array( 'plugin-committer', 'plugin-contributor' ) )
     373                ) {
     374                        // #4329
     375                        $robots = true;
     376                } elseif ( bbp_is_single_view() ) {
     377                        if ( ! bbpress()->topic_query->query ) {
     378                                bbp_view_query(); // Populate bbpress()->topic_query.
     379                        }
     380
     381                        bbpress()->topic_query->is_tax = false;
     382
     383                        // Empty views
     384                        if ( ! bbpress()->topic_query->have_posts() ) {
     385                                $robots = true;
     386                        }
     387                } elseif ( bbp_is_topic_tag() ) {
     388                        if ( ! bbpress()->topic_query->query ) {
     389                                bbp_has_topics(); // Populate bbpress()->topic_query.
     390                        }
     391
     392                        // Check all threads
     393                        $individually_stale = array_map(
     394                                function( $topic ) {
     395                                        // Thread is 'thin' and hasn't been replied to.
     396                                        if (
     397                                                strlen( $topic->post_content ) <= 100
     398                                                && ! bbp_get_topic_reply_count( $topic->ID, true )
     399                                        ) {
     400                                                return 'stale';
     401                                        }
     402
     403                                        // Thread is old
     404                                        $last_modified_date = get_post_meta( $topic->ID, '_bbp_last_active_time', true ) ?: $topic->post_date;
     405                                        if ( strtotime( $last_modified_date ) <= time() - 2*YEAR_IN_SECONDS ) {
     406                                                return 'stale';
     407                                        }
     408
     409                                        return 'fresh';
     410                                },
     411                                bbpress()->topic_query->posts
     412                        );
     413
     414                        // See if all posts 'stale' by checking that no fresh topics exists
     415                        $all_topics_noindexed = array_search( 'fresh', $individually_stale, true ) === false;
     416
     417                        // #4324, #4338
     418                        // Post count is <= 1
     419                        // Last Modified <= -2 years
     420                        // All topics are also noindexed ( See bbp_is_single_topic() logic )
     421                        if (
     422                                bbpress()->topic_query->post_count <= 1 ||
     423                                $all_topics_noindexed
     424                        ) {
     425                                $robots = true;
     426                        }
     427
     428                } elseif ( bbp_is_single_topic() ) {
     429                        if ( ! bbpress()->reply_query->query ) {
     430                                bbp_has_replies(); // Populate bbpress()->reply_query.
     431                        }
     432
     433                        // If no replies and short content - #4283
     434                        if (
     435                                ! bbpress()->reply_query->has_posts() &&
     436                                strlen( bbp_get_topic_content() ) <= 100
     437                        ) {
     438                                $robots = true;
     439                        }
     440                }
     441
     442                if ( $robots ) {
     443                        echo '<meta name="robots" content="noindex, follow" />',"\n";
     444                }
     445        }
     446
     447        /**
    359448         * Outputs rel="next", rel="prev" for paginated archives.
    360449         */
    … …  
    367456
    368457                if ( bbp_is_single_view() ) {
    369                         bbp_view_query();  // Populate bbpress()->topic_query.
     458                        if ( ! bbpress()->topic_query->query ) {
     459                                bbp_view_query();  // Populate bbpress()->topic_query.
     460                        }
    370461                        bbpress()->topic_query->is_tax = false;
    371462                        $max_pages = bbpress()->topic_query->max_num_pages;
    372463                } elseif ( bbp_is_single_topic() ) {
    373                         bbp_has_replies(); // Populate bbpress()->reply_query.
     464                        if ( ! bbpress()->reply_query->query ) {
     465                                bbp_has_replies(); // Populate bbpress()->reply_query.
     466                        }
    374467                        $max_pages = bbpress()->reply_query->max_num_pages;
    375468                } elseif ( bbp_is_single_forum() ) {
Note: See TracChangeset for help on using the changeset viewer.