bp_core_add_page_mappings( array $components, string $existing = 'keep' )
Creates necessary directory pages.
Description
Directory pages are those WordPress pages used by BP components to display content (eg, the ‘groups’ page created by BP).
Parameters
- $components
-
(Required) Components to create pages for.
- $existing
-
(Optional) 'delete' if you want to delete existing page mappings and replace with new ones. Otherwise existing page mappings are kept, and the gaps filled in with new pages. Default: 'keep'.
Default value: 'keep'
Source
File: bp-core/bp-core-functions.php
function bp_core_add_page_mappings( $components, $existing = 'keep' ) {
// If no value is passed, there's nothing to do.
if ( empty( $components ) ) {
return;
}
// Make sure that the pages are created on the root blog no matter which
// dashboard the setup is being run on.
if ( ! bp_is_root_blog() ) {
switch_to_blog( bp_get_root_blog_id() );
}
$pages = bp_core_get_directory_page_ids( 'all' );
// Delete any existing pages.
if ( 'delete' === $existing ) {
foreach ( $pages as $page_id ) {
wp_delete_post( $page_id, true );
}
$pages = array();
}
$page_titles = bp_core_get_directory_page_default_titles();
$pages_to_create = array();
foreach ( array_keys( $components ) as $component_name ) {
if ( ! isset( $pages[ $component_name ] ) && isset( $page_titles[ $component_name ] ) ) {
$pages_to_create[ $component_name ] = $page_titles[ $component_name ];
}
}
// Register and Activate are not components, but need pages when
// registration is enabled.
if ( bp_get_signup_allowed() ) {
foreach ( array( 'register', 'activate' ) as $slug ) {
if ( ! isset( $pages[ $slug ] ) ) {
$pages_to_create[ $slug ] = $page_titles[ $slug ];
}
}
}
// No need for a Sites directory unless we're on multisite.
if ( ! is_multisite() && isset( $pages_to_create['blogs'] ) ) {
unset( $pages_to_create['blogs'] );
}
// Members must always have a page, no matter what.
if ( ! isset( $pages['members'] ) && ! isset( $pages_to_create['members'] ) ) {
$pages_to_create['members'] = $page_titles['members'];
}
// Create the pages.
foreach ( $pages_to_create as $component_name => $page_name ) {
$exists = get_page_by_path( $component_name );
// If page already exists, use it.
if ( ! empty( $exists ) ) {
$pages[ $component_name ] = $exists->ID;
} else {
$pages[ $component_name ] = wp_insert_post( array(
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_status' => 'publish',
'post_title' => $page_name,
'post_type' => 'page',
) );
}
}
// Save the page mapping.
bp_update_option( 'bp-pages', $pages );
// If we had to switch_to_blog, go back to the original site.
if ( ! bp_is_root_blog() ) {
restore_current_blog();
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.7.0 | Introduced. |
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.