| | 822 | |
| | 823 | /** |
| | 824 | * Do not allow {@link comments_template()} to render during theme compatibility. |
| | 825 | * |
| | 826 | * When theme compatibility sets the 'is_page' flag to true via |
| | 827 | * {@link bp_theme_compat_reset_post()}, themes that use comments_template() |
| | 828 | * in their page template will run. |
| | 829 | * |
| | 830 | * To prevent comments_template() from rendering, we set the 'is_page' and |
| | 831 | * 'is_single' flags to false since that function looks at these conditionals |
| | 832 | * before querying the database for comments and loading the comments template. |
| | 833 | * |
| | 834 | * This is done during the output buffer as late as possible to prevent any |
| | 835 | * wonkiness. |
| | 836 | * |
| | 837 | * @since BuddyPress (1.9.2) |
| | 838 | * |
| | 839 | * @param string $retval The current post content. |
| | 840 | */ |
| | 841 | function bp_toggle_is_page( $retval = '' ) { |
| | 842 | global $wp_query; |
| | 843 | |
| | 844 | $wp_query->is_single = false; |
| | 845 | $wp_query->is_page = false; |
| | 846 | |
| | 847 | // set a flag so we know that we've toggled these WP_Query properties |
| | 848 | buddypress()->theme_compat->is_page_toggled = true; |
| | 849 | |
| | 850 | return $retval; |
| | 851 | } |
| | 852 | add_filter( 'bp_replace_the_content', 'bp_toggle_is_page', 9999 ); |
| | 853 | |
| | 854 | /** |
| | 855 | * Restores the 'is_single' and 'is_page' flags if toggled by BuddyPress. |
| | 856 | * |
| | 857 | * @since BuddyPress (1.9.2) |
| | 858 | * |
| | 859 | * @see bp_toggle_is_page() |
| | 860 | * @param object $query The WP_Query object. |
| | 861 | */ |
| | 862 | function bp_loop_end( $query ) { |
| | 863 | // check for our special flag and revert some WP_Query properties |
| | 864 | if ( isset( buddypress()->theme_compat->is_page_toggled ) ) { |
| | 865 | $query->is_single = true; |
| | 866 | $query->is_page = true; |
| | 867 | unset( buddypress()->theme_compat->is_page_toggled ); |
| | 868 | } |
| | 869 | } |
| | 870 | add_action( 'loop_end', 'bp_loop_end' ); |
| | 871 | No newline at end of file |