Changeset 9863
- Timestamp:
- 05/13/2020 05:03:21 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-hooks.php
r9850 r9863 23 23 add_action( 'wp_print_footer_scripts', array( $this, 'replace_quicktags_blockquote_button' ) ); 24 24 25 // Output rel="canonical" meta tag. Runs before WP's rel_canonical to unhook that if needed. 26 add_action( 'wp_head', array( $this, 'rel_canonical' ), 9 ); 27 28 // Output rel="next", rel="prev" meta tags. 29 add_action( 'wp_head', array( $this, 'rel_next_prev' ), 9 ); 30 31 // Output robots headers. 32 add_action( 'wp_head', array( $this, 'robots_noindex_header' )); 25 // Add bbPress support to the WordPress.org SEO plugin. 26 add_filter( 'wporg_canonical_base_url', array( $this, 'wporg_canonical_base_url' ) ); 27 add_filter( 'wporg_canonical_url', array( $this, 'wporg_canonical_url' ) ); 28 // Correct the number of pages, to respect the bbPress queries. 29 add_filter( 'wporg_rel_next_pages', array( $this, 'rel_next_prev_max_pages' ) ); 30 // Add extra conditionals to the noindexing. 31 add_filter( 'wporg_noindex_request', array( $this, 'should_noindex_robots' ) ); 33 32 34 33 // Output meta description. … … 366 365 367 366 /** 368 * Returns the canonical URL for various bbPress pages. 369 * 370 * @return array The canonical URL. 371 */ 372 public function get_canonical_url() { 373 $canonical_url = false; 374 $supports_paged = true; 375 367 * Add bbPress support to the WordPress.org SEO plugin for Canonical locations. 368 */ 369 public function wporg_canonical_base_url( $canonical_url ) { 376 370 if ( bbp_is_topic_tag() ) { 377 371 $canonical_url = bbp_get_topic_tag_link(); … … 387 381 // This covers all user pages rather than using 6 different bbp_is_*() calls. 388 382 $canonical_url = 'https://profiles.wordpress.org/' . bbpress()->displayed_user->user_nicename . '/'; 389 $supports_paged = false; 390 } 391 392 $canonical_url = mb_strtolower( $canonical_url, 'UTF-8' ); 393 394 return [ $canonical_url, $supports_paged ]; 395 } 396 397 /** 398 * Outputs <link rel="canonical"> tags for various bbPress pages. 399 */ 400 public function rel_canonical() { 401 list( $canonical_url, $canonical_supports_paged ) = $this->get_canonical_url(); 402 403 if ( bbp_is_single_topic() || bbp_is_single_forum() ) { 404 remove_action( 'wp_head', 'rel_canonical' ); // Doesn't handle pagination. 405 } 406 407 // Make sure canonical has pagination if needed. 408 $page = get_query_var( 'paged', 0 ); 409 if ( $canonical_url && $canonical_supports_paged && $page >= 2 ) { 410 $canonical_url .= 'page/' . absint( $page ) . '/'; 411 } 412 413 if ( $canonical_url ) { 414 echo '<link rel="canonical" href="' . esc_url( $canonical_url ) . '" />' . "\n"; 415 } 416 } 417 418 /** 419 * Adds noindex robots headers to various pages. 420 */ 421 public function robots_noindex_header() { 422 $robots = false; 423 383 } 384 385 return $canonical_url; 386 } 387 388 /** 389 * Add bbPress support to the WordPress.org SEO plugin for Canonical locations. 390 */ 391 public function wporg_canonical_url( $canonical_url ) { 392 global $wp_rewrite; 393 394 // profiles links don't support pagination. 395 if ( false !== stripos( $canonical_url, 'profiles.wordpress.org' ) ) { 396 $canonical_url = remove_query_arg( 'paged', $canonical_url ); 397 $canonical_url = preg_replace( "#/{$wp_rewrite->pagination_base}/\d+/?($|\?)#", '$1', $canonical_url ); 398 } 399 400 return $canonical_url; 401 } 402 403 /** 404 * Enables the noindex robots headers. 405 */ 406 public function should_noindex_robots( $robots ) { 424 407 if ( bbp_is_search() ) { 425 408 // #3955 … … 516 499 } 517 500 518 if ( $robots ) { 519 echo '<meta name="robots" content="noindex, follow" />',"\n"; 520 } 521 } 522 523 /** 524 * Outputs rel="next", rel="prev" for paginated archives. 525 */ 526 public function rel_next_prev() { 527 global $wp_query; 528 529 list( $canonical_url ) = $this->get_canonical_url(); 530 531 $max_pages = $wp_query->max_num_pages; 532 501 return $robots; 502 } 503 504 /** 505 * Add bbPress support to the WordPress.org SEO plugin for rel="next|prev" archive tags. 506 */ 507 public function rel_next_prev_max_pages( $max_pages ) { 533 508 if ( bbp_is_single_view() ) { 534 509 if ( ! bbpress()->topic_query->query ) { … … 537 512 bbpress()->topic_query->is_tax = false; 538 513 $max_pages = bbpress()->topic_query->max_num_pages; 514 539 515 } elseif ( bbp_is_single_topic() ) { 540 516 if ( ! bbpress()->reply_query->query ) { … … 542 518 } 543 519 $max_pages = bbpress()->reply_query->max_num_pages; 520 544 521 } elseif ( bbp_is_single_forum() ) { 545 522 $topic_count = get_post_meta( get_queried_object_id(), '_bbp_topic_count', true ); … … 549 526 } 550 527 551 if ( ! $canonical_url || ! $max_pages ) { 552 return; 553 } 554 555 $page = max( 1, get_query_var( 'paged', 0 ) ); 556 $next_page = min( $page + 1, $max_pages ); 557 $prev_page = max( $page - 1, 1 ); 558 559 if ( $page < $max_pages ) { 560 $next_page_url = $canonical_url . 'page/' . absint( $next_page ) . '/'; 561 echo '<link rel="next" href="' . esc_url( $next_page_url ) . '" />' . "\n"; 562 } 563 564 if ( $page > 1 ) { 565 $prev_page_url = $canonical_url . ( $prev_page > 1 ? 'page/' . absint( $prev_page ) . '/' : '' ); 566 echo '<link rel="prev" href="' . esc_url( $prev_page_url ) . '" />' . "\n"; 567 } 528 return $max_pages; 568 529 } 569 530
Note: See TracChangeset
for help on using the changeset viewer.