| | 684 | * Rehook maybe_redirect_404() to run later than the default |
| | 685 | * |
| | 686 | * WordPress's maybe_redirect_404() allows admins on a multisite installation |
| | 687 | * to define 'NOBLOGREDIRECT', a URL to which 404 requests will be redirected. |
| | 688 | * maybe_redirect_404() is hooked to template_redirect at priority 10, which |
| | 689 | * creates a race condition with bp_template_redirect(), our piggyback hook. |
| | 690 | * Due to a legacy bug in BuddyPress, internal BP content (such as members and |
| | 691 | * groups) is marked 404 in $wp_query until bp_core_load_template(), when BP |
| | 692 | * manually overrides the automatic 404. However, the race condition with |
| | 693 | * maybe_redirect_404() means that this manual un-404-ing doesn't happen in |
| | 694 | * time, with the results that maybe_redirect_404() thinks that the page is |
| | 695 | * a legitimate 404, and redirects incorrectly to NOBLOGREDIRECT. |
| | 696 | * |
| | 697 | * By switching maybe_redirect_404() to catch at a higher priority, we avoid |
| | 698 | * the race condition. If bp_core_load_template() runs, it dies before reaching |
| | 699 | * maybe_redirect_404(). If bp_core_load_template() does not run, it means that |
| | 700 | * the 404 is legitimate, and maybe_redirect_404() can proceed as expected. |
| | 701 | * |
| | 702 | * This function will be removed in a later version of BuddyPress. Plugins |
| | 703 | * (and plugin authors!) should ignore it. |
| | 704 | * |
| | 705 | * @since 1.6.1 |
| | 706 | * |
| | 707 | * @link http://buddypress.trac.wordpress.org/ticket/4329 |
| | 708 | * @link http://buddypress.trac.wordpress.org/ticket/4415 |
| | 709 | */ |
| | 710 | function _bp_rehook_maybe_redirect_404() { |
| | 711 | if ( defined( 'NOBLOGREDIRECT' ) ) { |
| | 712 | remove_action( 'template_redirect', 'maybe_redirect_404' ); |
| | 713 | add_action( 'template_redirect', 'maybe_redirect_404', 100 ); |
| | 714 | } |
| | 715 | } |
| | 716 | add_action( 'template_redirect', '_bp_rehook_maybe_redirect_404', 1 ); |
| | 717 | |
| | 718 | /** |