Index: bp-blogs-cache.php
===================================================================
--- bp-blogs-cache.php	(revision 9058)
+++ bp-blogs-cache.php	(working copy)
@@ -45,6 +45,7 @@
 function bp_blogs_clear_blog_object_cache( $blog_id, $user_id ) {
 	wp_cache_delete( 'bp_blogs_of_user_'        . $user_id, 'bp' );
 	wp_cache_delete( 'bp_total_blogs_for_user_' . $user_id, 'bp' );
+	wp_cache_delete( 'bp_blog_ids_of_user_' . $user_id() . '_inc_hidden', 'bp' );
 }
 
 /**
@@ -58,6 +59,7 @@
 function bp_blogs_format_clear_blog_cache( $recorded_blog_obj ) {
 	bp_blogs_clear_blog_object_cache( false, $recorded_blog_obj->user_id );
 	wp_cache_delete( 'bp_total_blogs', 'bp' );
+	wp_cache_delete( 'bp_blog_ids_of_user_' . $recorded_blog_obj->user_id . '_inc_hidden', 'bp' );
 }
 
 // List actions to clear object caches on
Index: bp-blogs-template.php
===================================================================
--- bp-blogs-template.php	(revision 9058)
+++ bp-blogs-template.php	(working copy)
@@ -1273,6 +1273,70 @@
 		return bp_get_button( apply_filters( 'bp_get_blogs_visit_blog_button', $button ) );
 	}
 
+	/**
+	 * Output the Add new post button to blog.
+	 *
+	 * @since BuddyPress (2.2.0)
+	 */
+	function bp_blog_new_post_button() {
+	    echo bp_get_blog_new_post_button();
+	}
+	/**
+	 * Get the Add new post to blog button.
+	 *
+	 * @since BuddyPress (2.2.0)
+	 *
+	 * @see BP_Button for a complete description of arguments and return
+	 *      value.
+	 *
+	 * @param array $args {
+	 *     Arguments are listed below, with their default values. For a
+	 *     complete description of arguments, see {@link BP_Button}.
+	 *     @type string $id Default: 'add_blog_post'.
+	 *     @type string $component Default: 'blogs'.
+	 *     @type bool $must_be_logged_in Default: true.
+	 *     @type bool $block_self Default: false.
+	 *     @type string $wrapper_class Default: 'blog-button add-post'.
+	 *     @type string $link_href Permalink of the wp-admin/post-new.php current blog in the loop.
+	 *     @type string $link_class Default: 'blog-button add-post'.
+	 *     @type string $link_text Default: 'New post'.
+	 *     @type string $link_title Default: 'Add post to site'.
+	 * }
+	 * @return string The HTML for the Visit button.
+	 */
+	function bp_get_blog_new_post_button() {
+		if ( ! is_user_logged_in() ) {
+			return false;
+		}
+		$blog_id = bp_get_blog_id();
+		if ( ! is_super_admin() ) {
+			$blogs = wp_cache_get( 'bp_blog_ids_of_user_' . bp_loggedin_user_id() . '_inc_hidden', 'bp' );
+			if ( empty( $blogs ) ) {
+				$blogs = BP_Blogs_Blog::get_blog_ids_for_user( bp_loggedin_user_id() );
+				wp_cache_set( 'bp_blog_ids_of_user_' . bp_loggedin_user_id() . '_inc_hidden', $blogs, 'bp' );
+			}
+			if ( ! in_array( $blog_id, $blogs ) ) {
+				return false;
+			}
+			if ( ! bp_current_user_can( 'edit_posts', $blog_id ) ) {
+				return false;
+			}
+		}
+		$button_args = array(
+		'id' => 'add_blog_post',
+		'component' => 'blogs',
+		'must_be_logged_in' => true,
+		'block_self' => false,
+		'link_text' => __( 'New post', 'buddypress' ),
+		'link_title' => __( 'Add post to site', 'buddypress' ),
+		'link_class' => 'blog-button add-post',
+		'link_href' => bp_get_blog_permalink() . 'wp-admin/post-new.php',
+		'wrapper_class' => 'blog-button add-post',
+		);
+		return bp_get_button( apply_filters( 'bp_get_blog_new_post_button', $button_args ) );
+	}
+
+	
 /** Stats **********************************************************************/
 
 /**
