Skip to:
Content

BuddyPress.org

Ticket #6675: 6675.02.patch

File 6675.02.patch, 4.2 KB (added by imath, 6 years ago)
  • src/bp-core/bp-core-filters.php

    diff --git src/bp-core/bp-core-filters.php src/bp-core/bp-core-filters.php
    index a351ac4..94ec9dd 100644
    function bp_modify_page_title( $title = '', $sep = '»', $seplocation = 'ri 
    790790
    791791        // Append the site title to title parts if theme supports title tag
    792792        if ( true === $title_tag_compatibility ) {
    793                 $title_parts[] = $blogname;
     793                $title_parts['site'] = $blogname;
    794794
    795                 if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
    796                         $title_parts[] = sprintf( __( 'Page %s', 'buddypress' ), max( $paged, $page ) );
     795                if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() && ! bp_is_single_activity() ) {
     796                        $title_parts['page'] = sprintf( __( 'Page %s', 'buddypress' ), max( $paged, $page ) );
    797797                }
    798798        }
    799799
    800         // Pad the separator with 1 space on each side
    801         $prefix = str_pad( $sep, strlen( $sep ) + 2, ' ', STR_PAD_BOTH );
     800        if ( ! is_array( $title ) ) {
     801                // Pad the separator with 1 space on each side
     802                $prefix = str_pad( $sep, strlen( $sep ) + 2, ' ', STR_PAD_BOTH );
    802803
    803         // Join the parts together
    804         $new_title = join( $prefix, array_filter( $title_parts ) );
     804                // Join the parts together
     805                $new_title = join( $prefix, array_filter( $title_parts ) );
    805806
    806         // Append the prefix for pre `title-tag` compatibility
    807         if ( false === $title_tag_compatibility ) {
    808                 $new_title = $new_title . $prefix;
     807                // Append the prefix for pre `title-tag` compatibility
     808                if ( false === $title_tag_compatibility ) {
     809                        $new_title = $new_title . $prefix;
     810                }
     811
     812                /**
     813                 * Filters the page title for BuddyPress pages.
     814                 *
     815                 * @since  1.5.0
     816                 *
     817                 * @param  string $new_title   The BuddyPress page title.
     818                 * @param  string $title       The original WordPress page title.
     819                 * @param  string $sep         The title parts separator.
     820                 * @param  string $seplocation Location of the separator (left or right).
     821                 */
     822                return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation );
     823        } else {
     824                // Remove site & page to only keep the title of the viewed page
     825                $bp_title_parts = array_diff_key( $title_parts, array( 'site' => false, 'page' => false ) );
     826
     827                // Get the new separator
     828                $sep = apply_filters( 'document_title_separator', '-' );
     829
     830                // Build the new title, we don't need to sanitize it, as WordPress will take care of this.
     831                $new_title = array( 'title' => join( " $sep ", $bp_title_parts ) );
     832
     833                // Add the page argument if needed
     834                if ( isset( $title_parts['page'] ) ) {
     835                        $new_title['page'] = $title_parts['page'];
     836                }
     837
     838                // Add the site argument if needed
     839                if ( isset( $title_parts['site'] ) ) {
     840                        $new_title['site'] = $title_parts['site'];
     841                }
     842
     843                /**
     844                 * Filters the document title for BuddyPress pages.
     845                 *
     846                 * @since  2.4.0
     847                 *
     848                 * @param  array  $new_title   The BuddyPress page title.
     849                 * @param  array  $title       The original WordPress page title.
     850                 * @param  string $sep         The title separator
     851                 * @param  array  $title_parts The BuddyPress title parts
     852                 */
     853                return apply_filters( 'bp_modify_document_title', $new_title, $title, $sep, $title_parts );
    809854        }
     855}
    810856
    811         /**
    812          * Filters the page title for BuddyPress pages.
    813          *
    814          * @since  1.5.0
    815          *
    816          * @param  string $new_title   The BuddyPress page title.
    817          * @param  string $title       The original WordPress page title.
    818          * @param  string $sep         The title parts separator.
    819          * @param  string $seplocation Location of the separator (left or right).
    820          */
    821         return apply_filters( 'bp_modify_page_title', $new_title, $title, $sep, $seplocation );
     857/**
     858 * Once the active theme is set up, use the best filter to render the document title
     859 * for BuddyPress pages
     860 *
     861 * @since  2.4.0
     862 */
     863function bp_do_document_title() {
     864        $filter = 'wp_title';
     865
     866        if ( function_exists( 'wp_get_document_title' ) && true === current_theme_supports( 'title-tag' ) ) {
     867                $filter = 'document_title_parts';
     868        }
     869
     870        add_filter( $filter, 'bp_modify_page_title', 20, 3 );
    822871}
    823 add_filter( 'wp_title', 'bp_modify_page_title', 20, 3 );
     872add_action( 'bp_after_setup_theme', 'bp_do_document_title' );
     873
    824874add_filter( 'bp_modify_page_title', 'wptexturize'     );
    825875add_filter( 'bp_modify_page_title', 'convert_chars'   );
    826876add_filter( 'bp_modify_page_title', 'esc_html'        );