Zack Tollman (@tollmanz)

Forum Replies Created

Viewing 1 replies (of 1 total)
  • @tollmanz

    Participant

    Hi there!

    I just updated to bbPress 2.4 and experienced the same problem. All titles not on bbPress pages were rendered as blank titles.

    It seems bbPress 2.4 introduced a new function that filters the wp_title function. As a temporary workaround that does not required bbPress plugin file changes, I have added the following to my theme’s functions.php:

    /**
     * Restore non bbPress page titles.
     *
     * v2.4 of bbPress introduced a bug where titles for all non-bbPress pages were blank. This function restores order
     * without overwriting the bbPress core files. It uses the exact same function as bbPress for the titles with one
     * change: if none of the bbPress queries match, it returns the original title.
     *
     * The function first removes the bbPress filter that performs this action, then uses it's own routine to determine the
     * title.
     *
     * @param  string    $title          Optional. The title (not used).
     * @param  string    $sep            Optional, default is '»'. How to separate the various items within the page title.
     * @param  string    $seplocation    Optional. Direction to display title, 'right'.
     * @return string                    Modified title.
     */
    function my_prefix_bbp_title( $title, $sep, $seplocation ) {
    	// Get rid of the core "bbp_title" filter callback
    	remove_filter( 'wp_title', 'bbp_title', 10, 3 );
    
    	// Store original title to compare
    	$_title = $title;
    
    	// Title array
    	$title = array();
    
    	/** Archives **************************************************************/
    
    	// Forum Archive
    	if ( bbp_is_forum_archive() ) {
    		$title['text'] = bbp_get_forum_archive_title();
    
    	// Topic Archive
    	} elseif ( bbp_is_topic_archive() ) {
    		$title['text'] = bbp_get_topic_archive_title();
    
    	/** Edit ******************************************************************/
    
    	// Forum edit page
    	} elseif ( bbp_is_forum_edit() ) {
    		$title['text']   = bbp_get_forum_title();
    		$title['format'] = esc_attr__( 'Forum Edit: %s', 'bbpress' );
    
    	// Topic edit page
    	} elseif ( bbp_is_topic_edit() ) {
    		$title['text']   = bbp_get_topic_title();
    		$title['format'] = esc_attr__( 'Topic Edit: %s', 'bbpress' );
    
    	// Reply edit page
    	} elseif ( bbp_is_reply_edit() ) {
    		$title['text']   = bbp_get_reply_title();
    		$title['format'] = esc_attr__( 'Reply Edit: %s', 'bbpress' );
    
    	// Topic tag edit page
    	} elseif ( bbp_is_topic_tag_edit() ) {
    		$title['text']   = bbp_get_topic_tag_name();
    		$title['format'] = esc_attr__( 'Topic Tag Edit: %s', 'bbpress' );
    
    	/** Singles ***************************************************************/
    
    	// Forum page
    	} elseif ( bbp_is_single_forum() ) {
    		$title['text']   = bbp_get_forum_title();
    		$title['format'] = esc_attr__( 'Forum: %s', 'bbpress' );
    
    	// Topic page
    	} elseif ( bbp_is_single_topic() ) {
    		$title['text']   = bbp_get_topic_title();
    		$title['format'] = esc_attr__( 'Topic: %s', 'bbpress' );
    
    	// Replies
    	} elseif ( bbp_is_single_reply() ) {
    		$title['text']   = bbp_get_reply_title();
    
    	// Topic tag page
    	} elseif ( bbp_is_topic_tag() || get_query_var( 'bbp_topic_tag' ) ) {
    		$title['text']   = bbp_get_topic_tag_name();
    		$title['format'] = esc_attr__( 'Topic Tag: %s', 'bbpress' );
    
    	/** Users *****************************************************************/
    
    	// Profile page
    	} elseif ( bbp_is_single_user() ) {
    
    		// Current users profile
    		if ( bbp_is_user_home() ) {
    			$title['text'] = esc_attr__( 'Your Profile', 'bbpress' );
    
    		// Other users profile
    		} else {
    			$title['text']   = get_userdata( bbp_get_user_id() )->display_name;
    			$title['format'] = esc_attr__( "%s's Profile", 'bbpress' );
    		}
    
    	// Profile edit page
    	} elseif ( bbp_is_single_user_edit() ) {
    
    		// Current users profile
    		if ( bbp_is_user_home_edit() ) {
    			$title['text']   = esc_attr__( 'Edit Your Profile', 'bbpress' );
    
    		// Other users profile
    		} else {
    			$title['text']   = get_userdata( bbp_get_user_id() )->display_name;
    			$title['format'] = esc_attr__( "Edit %s's Profile", 'bbpress' );
    		}
    
    	/** Views *****************************************************************/
    
    	// Views
    	} elseif ( bbp_is_single_view() ) {
    		$title['text']   = bbp_get_view_title();
    		$title['format'] = esc_attr__( 'View: %s', 'bbpress' );
    
    	/** Search ****************************************************************/
    
    	// Search
    	} elseif ( bbp_is_search() ) {
    		$title['text'] = bbp_get_search_title();
    	} else {
    		return $_title;
    	}
    
    	// This filter is deprecated. Use 'bbp_before_title_parse_args' instead.
    	$title = apply_filters( 'bbp_raw_title_array', $title );
    
    	// Set title array defaults
    	$title = bbp_parse_args( $title, array(
    		'text'   => '',
    		'format' => '%s'
    	), 'title' );
    
    	// Get the formatted raw title
    	$title = sprintf( $title['format'], $title['text'] );
    
    	// Filter the raw title
    	$title = apply_filters( 'bbp_raw_title', $title, $sep, $seplocation );
    
    	// Compare new title with original title
    	if ( $title === $_title )
    		return $title;
    
    	// Temporary separator, for accurate flipping, if necessary
    	$t_sep  = '%WP_TITILE_SEP%';
    	$prefix = '';
    
    	if ( !empty( $title ) )
    		$prefix = " $sep ";
    
    	// sep on right, so reverse the order
    	if ( 'right' === $seplocation ) {
    		$title_array = array_reverse( explode( $t_sep, $title ) );
    		$title       = implode( " $sep ", $title_array ) . $prefix;
    
    	// sep on left, do not reverse
    	} else {
    		$title_array = explode( $t_sep, $title );
    		$title       = $prefix . implode( " $sep ", $title_array );
    	}
    
    	// Filter and return
    	return apply_filters( 'bbp_title', $title, $sep, $seplocation );
    }
    
    add_filter( 'wp_title', 'my_prefix_bbp_title', 9, 3 );
Viewing 1 replies (of 1 total)