front_page and BuddyPress interception
-
Hi people,
I’m trying to solve an issue between a plugin of mines and BuddyPress, I would be glad if somebody, I wish @boonebgorges, colud give me some advice.
So here’s the problem. I wrote a function to set an option for an alternative front_page if the user is not logged in. It works pretty good on WordPress, and here is how:
function sgrwp14theme_guests_homepage( $wp ) { // Special case: when a BuddyPress directory (eg example.com/members) // is set to be the front page, BuddyPress will force the page and this // will not work. We have to add a bp_core_get_directory_page_ids filter. $page = get_post( get_option( 'guests_page_on_front' ) ); if ( $page ) { if ( ! is_user_logged_in() && empty( $wp->query_vars ) ) $wp->query_vars['pagename'] = $page->post_name; } } add_action( 'parse_request', 'sgrwp14theme_guests_homepage' );
As I wrote in the code comment, BuddyPress intercepts this and force the front_page if the original one was a BP Directory, so my previous code doesn’t work anymore in this case.
So I had a trick to make it work. Intercepting the
bp_core_get_directory_page_ids
, unsetting the page id for the front_page component, in this way:function guests_bp_directory_page_ids( $page_ids ) { if ( ! is_user_logged_in() ) { if ( 'page' == get_option( 'show_on_front' ) && $page_on_front = (int) get_option( 'page_on_front' ) ) $front_page_component = array_search( $page_on_front, $page_ids ); if ( false !== $front_page_component ) // Disattivo la pagina in questione. $page_ids[$front_page_component] = 0; } return $page_ids; } add_filter( 'bp_core_get_directory_page_ids', 'guests_bp_directory_page_ids' );
Anyway it doesn’t really work, because my original (for logged in users) front page is activity, and the bp_core_get_directory_page_ids filter I wrote made a behavior I don’t really want: the user home page will became the profile one and not the activity if the user is not logged in (www.buddypress.org/users/sgr33n/ -> profile page, http://www.buddypress.org/users/sgr33n/activity/ -> activity page).
Is there an alternative way to make this work?
Thanks 🙂
- The topic ‘front_page and BuddyPress interception’ is closed to new replies.