BP_Registration_Theme_Compat
The main theme compat class for BuddyPress Registration.
Description
This class sets up the necessary theme compatibility actions to safely output registration template parts to the_title and the_content areas of a theme.
Source
File: bp-members/classes/class-bp-registration-theme-compat.php
class BP_Registration_Theme_Compat {
/**
* Setup the groups component theme compatibility.
*
* @since BuddyPress 1.7.0
*/
public function __construct() {
add_action( 'bp_setup_theme_compat', array( $this, 'is_registration' ) );
}
/**
* Are we looking at either the registration or activation pages?
*
* @since BuddyPress 1.7.0
*/
public function is_registration() {
// Bail if not looking at the registration or activation page.
if ( ! bp_is_register_page() && ! bp_is_activation_page() ) {
return;
}
// Not a directory.
bp_update_is_directory( false, 'register' );
// Setup actions.
add_filter( 'bp_get_buddypress_template', array( $this, 'template_hierarchy' ) );
add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'dummy_post' ) );
add_filter( 'bp_replace_the_content', array( $this, 'dummy_content' ) );
}
/** Template ***********************************************************/
/**
* Add template hierarchy to theme compat for registration/activation pages.
*
* This is to mirror how WordPress has
* {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}.
*
* @since BuddyPress 1.8.0
*
* @param string $templates The templates from bp_get_theme_compat_templates().
* @return array $templates Array of custom templates to look for.
*/
public function template_hierarchy( $templates ) {
$component = sanitize_file_name( bp_current_component() );
/**
* Filters the template hierarchy for theme compat and registration/activation pages.
*
* This filter is a variable filter that depends on the current component
* being used.
*
* @since BuddyPress 1.8.0
*
* @param array $value Array of template paths to add to hierarchy.
*/
$new_templates = apply_filters( "bp_template_hierarchy_{$component}", array(
"members/index-{$component}.php"
) );
// Merge new templates with existing stack
// @see bp_get_theme_compat_templates().
$templates = array_merge( (array) $new_templates, $templates );
return $templates;
}
/**
* Update the global $post with dummy data.
*
* @since BuddyPress 1.7.0
*/
public function dummy_post() {
// Registration page.
if ( bp_is_register_page() ) {
$title = __( 'Create an Account', 'buddyboss' );
if ( 'completed-confirmation' == bp_get_current_signup_step() ) {
$title = __( 'We\'re almost there!', 'buddyboss' );
}
// Activation page.
} else {
$title = __( 'Activate Your Account', 'buddyboss' );
if ( bp_account_was_activated() ) {
$title = __( 'Account Activated', 'buddyboss' );
}
}
bp_theme_compat_reset_post( array(
'ID' => 0,
'post_title' => $title,
'post_author' => 0,
'post_date' => 0,
'post_content' => '',
'post_type' => 'page',
'post_status' => 'publish',
'is_page' => true,
'comment_status' => 'closed'
) );
}
/**
* Filter the_content with either the register or activate templates.
*
* @since BuddyPress 1.7.0
*/
public function dummy_content() {
if ( bp_is_register_page() ) {
return bp_buffer_template_part( 'members/register', null, false );
} else {
return bp_buffer_template_part( 'members/activate', null, false );
}
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.7.0 | Introduced. |
Methods
- __construct — Setup the groups component theme compatibility.
- dummy_content — Filter the_content with either the register or activate templates.
- dummy_post — Update the global $post with dummy data.
- is_registration — Are we looking at either the registration or activation pages?
- template_hierarchy — Add template hierarchy to theme compat for registration/activation pages.
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.